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

本文关键字:返回 MATLAB 数据 应用程序 运行 | 更新日期: 2023-09-27 18:14:43

我知道下面这行将从MATLAB中运行我的c#应用程序。

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

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

多亏了Alyafey,我可以在matlab中使用下面的行来运行我的c#应用程序并返回值。

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

然而,我不确定在我的c#应用程序中如何返回值。我的代码是在控制台应用程序中编写的,因此代码在静态void Main处进入和退出。我知道我可以改变main函数返回一个整数,但是我需要返回的数字是一个双精度。我该怎么做呢?我认为使用控制台应用程序是错误的?

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

我希望这对你有帮助,这不是一个应用程序,但你可以创建c#库而不是应用程序。

首先创建你的c#应用程序来做这样一个示例。

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文档中心的详细信息