Info

此问题已关闭。 请重新打开它进行编辑或回答。

A function works in MATLAB but shows an error in C#

1 次查看(过去 30 天)
Hello all,
I have a function which is working very well in MATALAB. But interestingly when I run it in C# I get this error:
Index exceeds matrix dimensions.
C# code:
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using A;
double[] Bx = new double[N];
double[,] PP = new double[N,N];
double[,] W = new double[N,N];
// Some calculation for Bx , PP & W
MWNumericArray arr1 = PP;
MWNumericArray arr2 = Bx;
MWNumericArray arr3 = W;
ACLASS OBJ = new ACLASS();
MWArray RESULT = (MWNumericArray)OBJ.A((MWNumericArray)arr1, (MWNumericArray)arr2, (MWNumericArray)arr3,3, 2,1,1);
// Copy back the RESULT in PP
PP = (double[,])((MWNumericArray)RESULT).ToArray(MWArrayComponent.Real);
  • What does happen in C# which disturbs matrix dimension ?
  • Could it be because of difference arrays in C# start from 0 and in MATLAB start from 1 ?
Any help ?
Thanks

回答(1 个)

Varun Bhaskar
Varun Bhaskar 2015-8-12
Hello,
Please follow the simple example of the 'magic square' code integration in the following link :
Since you have already declared arr1, arr2, and arr3 you do not need to typecast again in the next line of code. Also, as you said C# array indices start from 0, so MWNumeric Array indices start from 0 to n-1, n being the size of the array.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by