运行c#应用程序并将数据返回给MATLAB

时间:2014-07-25 12:29:00

标签: c# .net matlab

我知道下面的代码行将在MATLAB中运行我的c#应用程序。

dos(['C:\MyLocation\bin\Release\MyApp.exe']);

我想知道的是如何将数据(数组)从我的c#应用程序返回到MATLAB变量?

更新

感谢Alyafey,我可以在matlab中使用以下行来运行我的c#应用程序并返回一个值。

 [status,cmdout] = system(command,'-echo')

但是我不确定在我的c#应用程序中如何返回值。我的代码写在控制台应用程序中,因此代码进入和退出静态void Main。我知道我可以更改main函数来返回一个整数但是我需要返回的数字是double。我该怎么做?我假设使用控制台应用程序是错误的?

1 个答案:

答案 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