我在寫一個需要調用MATLAB處理例程的C#程序。我一直在看MATLAB的COM接口。不幸的是,就可交換數據的類型而言,COM接口似乎相當有限。支持矩陣和字符數組,但似乎沒有支持使用COM接口在C#和MATLAB之間交換結構數據或單元陣列。例如,在下面的代碼中(假設名爲IM000000的DICOM圖像存在於相應的文件夾中),MATLAB變量'img'和'header'分別是一個256x256 int16矩陣和一個結構體。 GetWorkspaceData調用適用於'img',但'header'返回null,因爲'header'是一個結構體。非矩陣數據類型的C#&MATLAB互操作性
public class MatlabDataBridge
{
MLApp.MLAppClass matlab;
public MatlabDataBridge()
{
matlab = new MLApp.MLAppClass();
}
public void ExchangeData()
{
matlab.Execute(@"cd 'F:\Research Data\'");
matlab.Execute(@"img = dicomread('IM000000');");
matlab.Execute(@"header = dicominfo('IM000000');");
matlab.GetWorkspaceData(@"img", "base", out theImg); // correctly returns a 2D array
matlab.GetWorkspaceData(@"header", "base", out theHeader); // fails, theHeader is still null
}
}
是否有一個合適的解決方法,使用COM接口將結構數據編組到MATLAB中/從MATLAB進行編組?如果不是的話,MATLAB Builder NE插件是否支持該功能?
考慮使用C++/CLI。與.NET託管代碼(包括C#)和Matlab的本地MEX API無縫兼容。 – 2011-03-07 23:49:22