我有一个MxNx3矩阵,我想使用MWArray将其传输到matlab中。
这是我的代码,但是没有CTOR。
有什么办法吗?

RGBImage image = _currentImage as RGBImage;

int height = image.Height;
int width = image.Width;

//transform the 1D array of byte into MxNx3 matrix
byte[, ,] rgbByteImage = new byte[3, height, width];
if (image[0].Bpp > 16)
{
    for (int i = 0; i < height; i++)
    {
        for (int j = 0, k = 0; k < width; j = j + 3, k++)
        {
            rgbByteImage[0, i, k] = image[0].Data[i * width + j];
            rgbByteImage[1, i, k] = image[0].Data[i * width + j + 1];
            rgbByteImage[2, i, k] = image[0].Data[i * width + j + 2 ];
        }
    }
}

MWNumericArray tempArr = new MWNumericArray(rgbByteImage);

最佳答案

RGBImage image = _currentImage as RGBImage;

int height = image.Height;
int width = image.Width;

//transform the 1D array of byte into MxNx3 matrix

byte[ , , ] RGBByteImage = new byte[3,height, width];

if (image[0].Bpp > 16)
{
    for (int i = 0; i < height; i++)
    {
        for (int j = 0, k = 0; k < width; j = j + 3, k++)
        {
            RGBByteImage[0, i, k] = image[0].Data[3 * i * width + j];
            RGBByteImage[1, i, k] = image[0].Data[3 * i * width + j + 1];
            RGBByteImage[2, i, k] = image[0].Data[3 * i * width + j + 2];
        }
    }
}

MWNumericArray matrix = null;
matrix = new MWNumericArray(MWArrayComplexity.Real, MWNumericType.Int8, 3,height, width);
matrix = RGBByteImage;

这就是我所发现的。

这里也有一个不错的教程
http://domoreinlesstime.wordpress.com/2013/01/26/access-matlab-from-c/

请注意,您对MWArray.dll文件(x64或x86)具有正确的引用。我浪费了大约一天的时间。

关于C#数组到MWarray Matlab中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15881862/

10-10 18:57