首页 文章

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

提问于
浏览
0

我知道下面这一行将在MATLAB中运行我的c#应用程序 .

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

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

Update

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

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

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

1 回答

  • 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 .

相关问题