Вызов метода MATLAB, скомпилированного в сборку .NET из C # - PullRequest
1 голос
/ 25 января 2012

Я создал файл сценария в MATLAB R2010a со следующим кодом.Я скомпилировал его в сборку .NET (файл .dll).

Сценарий MATLAB:

function res=Moshtagh(f)
    res=diff(f);
end

В MATLAB все работает нормально.Обратите внимание, что в моей dll имя класса Difer, а мой метод вычисления производной - Moshtagh.

C # Код:

using MathWorks.MATLAB.NET.ComponentData;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
try
{
    Untitled3.Difer dif = new Untitled3.Difer();
    MWArray mw = "x+sin(2*x)";
    MessageBox.Show(dif.Moshtagh(mw).ToString());
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

Но проблема заключается не в том, чтобы получитьрезультат 1+2cos(2x), в окне сообщения отображается:

-77 72 -10 5 -70 10 -8 78 -79

1 Ответ

0 голосов
/ 25 января 2012

Я предполагаю, что вы должны определить mw как MWCharArray, а не как MWArray.

  Untitled3.Difer dif = new Untitled3.Difer();
  MWCharArray mw = new MWCharArray("x+sin(2*x)");
  MessageBox.Show(dif.Moshtagh(mw).ToString());

Другое предположение состоит в том, что Moshtagh ожидает первый аргумент как int - nargout=1

  MWArray out = dif.Moshtagh(1,mw);
...