在 C# 中解析 Matlab 矩阵

问题描述 投票:0回答:1

我有一个

MWCellArray
对象,在代码中显示如下(使用 DLL 集成):

MWCellArray movieResults = (MWCellArray) RecommendationResults[0];

int[] dim = movieResults.Dimensions;

MessageBox.Show("rows: " + dim[0].ToString() + " colums: " + dim[1].ToString());

MessageBox.Show(movieResults.ToString());


MessageBox.Show(movieResults[1][20].ToString());

矩阵是二维的,具有

dim[0] = 3
dim[1] = 3
。完整对象上的 ToString() 返回:

最后一行中的第一个维度似乎正确捕获了行,但第二个维度似乎捕获了第一列的各个字符。在这里,我预计索引 20 会失败,因为我们只有 3 列,所以我的问题是如何处理输出? MatLab 的文档相当有限。

c# matlab
1个回答
0
投票

一个小解决方法。您可以在 MatLab 中实现一个获取矩阵元素的函数:

function x = getmatrixelement(A, r, c)

[Rows, Columns] = size(A);

if ((r <= Rows) && (c <= Columns))
   x = A(r, c);
end

然后从 C# 中,您可以填充数组或直接处理结果:

MWCellArray movieResults = (MWCellArray) RecommendationResults[0];

int[] dim = movieResults.Dimensions;

for (int row = 1; row <= dim[0]; row++)
{
    for (int column = 1; column <= dim[1]; column++)
        MWArray[] results = recommender.getmatrixelement(1, movieResults, row, column);

        MWCellArray cell = (MWCellArray) results[0];

        MessageBox.Show(cell.ToString());
    }
}

注意

recommender
是提供
getmatrixelement
函数的类的实例。这可以很容易地适应数值 MatLab 数组。

© www.soinside.com 2019 - 2024. All rights reserved.