将3D数组从C#转换为Matlab的MWNumericArray是否有大小限制?

时间:2019-07-17 16:04:43

标签: c# matlab matlab-compiler

我有一个c#应用程序,需要将一些数据发送到Matlab。数据是short的3D数组。

short[,,] originalArray; It's value is: {short[532, 512, 512]}

我的c#转换方法如下:

public static MWArray ShortArrayToMWArray(short[,,] intArray, int v, int v1, int v2)
{
    try
    {
        //MWArray MW = new MWNumericArray(intArray);
        //return MW;
        MWNumericArray matrix = null;
        matrix = new MWNumericArray(MWArrayComplexity.Real, MWNumericType.Int8, v, v1, v2);
        matrix = intArray;
        return matrix;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
        return new MWNumericArray();
    }
}

当我发送全部内容时,会收到一个非常奇怪的错误消息:

enter image description here

只有当我开始尝试使用尺寸时,我才开始怀疑并提出这个问题。如果我发送数组的1/4,它会进行转换(1/2仍然是相同的错误):

// Copy 1/4 of the array into a tmp array    
Array tmpArray = Array.CreateInstance(typeof(short), originalArray.GetLength(0)/4, originalArray.GetLength(1)/4, originalArray.GetLength(2)/4);

System.Array.Copy(voxelArray, tmpArray, originalArray.GetLength(0)/4 * originalArray.GetLength(1)/4 * originalArray.GetLength(2)/4);

MWArray mwVol = MatlabUtils.ShortArrayToMWArray((short[,,])tmpArray, originalArray.GetLength(0) / 4, originalArray.GetLength(1) / 4, originalArray.GetLength(2) / 4);

System.Array.Copy(voxelArray, tmpArray, originalArray.GetLength(0)/4 * originalArray.GetLength(1)/4 * originalArray.GetLength(2)/4);

MWArray mwVol = MatlabUtils.ShortArrayToMWArray((short[,,])tmpArray, originalArray.GetLength(0) / 4, originalArray.GetLength(1) / 4, originalArray.GetLength(2) / 4);

我做错转换了吗?

0 个答案:

没有答案