让我们说,为了争论,我有 MWCellarray temp:
MWCellArray temp = new MWCellArray(10000,11);
我现在希望调用一个 Matlab 函数来对其进行一些简单的计算:
MLApp.MLApp matlab = new MLApp.MLApp();
<THIS IS THE MISSING STEP>
matlab.Execute("open 'C:\Program Filez\mymatlabcode.m'");
matlab.Execute("[thisismyoutput] = mymatlabcode(temp)");
我现在需要确保我可以先将 temp 传递到 matlab 工作区。显然我的第一个想法是:
matlab.PutWorkspaceData("putworkspace", "base", temp);
但没有:{“未实现(来自 HRESULT 的异常:0x80004001(E_NOTIMPL))”}
似乎我将不得不将 MWCellArray 转换为字符串数组才能使用该命令....
//{
// int[] kDimensions = temp.Dimensions;
// string[,] stemp = new string[kDimensions[0], kDimensions[1]];
// for (int i = 0; i < kDimensions[0]; i++)
// {
// for (int j = 0; j < kDimensions[1]; j++)
// {
// stemp [i, j] = (temp[i + 1, j + 1]).ToString();
// }
// }
//}
这是非常缓慢的。真正的实现是大约 15 个 MWCellArrays,这个转换需要 15-20 分钟。
所以。我怎样才能以明智的方式做到这一点?我看不到任何其他启用传输的方法。matlab.PutCharArray 和 matlab.PutFullMatrix 似乎都不适用。
有没有办法大大加快循环?我对 c# 完全陌生
或者我会认为我应该能够将 MWCellArray 保存为 C 驱动器上的 .mat 文件然后加载它?(加载很容易,保存让我难过)
我会对你能提供的任何见解感兴趣。谢谢。