我知道下面的代码行将在MATLAB中运行我的c#应用程序。
dos(['C:\MyLocation\bin\Release\MyApp.exe']);
我想知道的是如何将数据(数组)从我的c#应用程序返回到MATLAB变量?
更新
感谢Alyafey,我可以在matlab中使用以下行来运行我的c#应用程序并返回一个值。
[status,cmdout] = system(command,'-echo')
但是我不确定在我的c#应用程序中如何返回值。我的代码写在控制台应用程序中,因此代码进入和退出静态void Main。我知道我可以更改main函数来返回一个整数但是我需要返回的数字是double。我该怎么做?我假设使用控制台应用程序是错误的?
答案 0 :(得分:1)
我希望这会有所帮助,它不是一个应用程序,但你可以创建c#库而不是app。
首先创建你的c#app,做这样的样本。
using System;
namespace MatlabLib
{
public class MatlabHandler
{
public static double[] GetNums()
{
var db = new double[10];
var r = new Random();
for (int i = 0; i < 10; i++)
{
db[i] = r.Next();
}
return db;
}
}
}
然后在matlab中你可以做到这一点。
%%path to dll file
dllPath = fullfile('c:','MatlabLib.dll');
%%load dll
NET.addAssembly(dllPath);
%% get class by calling it's name started by namespace
obj = MatlabLib.MatlabHandler
%%calling static function
mlData = obj.GetNums;
%% convert result to array of double
l = double(mlData);
有关matlab doc center的更多详细信息,请参阅此link。