Я пишу программу на C #, которая должна вызывать процедуры обработки MATLAB.Я смотрел на COM-интерфейс MATLAB.К сожалению, интерфейс COM выглядит довольно ограниченным с точки зрения типов данных, которыми можно обмениваться.Поддерживаются матрицы и символьные массивы, но, похоже, не поддерживается обмен структурными данными или массивами ячеек между C # и MATLAB с использованием интерфейса COM.Например, в следующем коде (при условии, что образ DICOM с именем IM000000 присутствует в соответствующей папке файлов), переменные MATLAB 'img' и 'header' представляют собой матрицу 256x256 int16 и структуру соответственно.Вызов GetWorkspaceData прекрасно работает для «img», но возвращает «ноль» для «заголовка», поскольку «заголовок» является структурой.
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
}
}
Существует ли подходящий обходной путь для упорядочения данных структуры в / из MATLAB с использованием COMинтерфейс?Если нет, хорошо ли эта функция поддерживается надстройкой MATLAB Builder NE?