[C#] 调用MATLAB(Matlab COM接口) (一)调用函数

3 篇文章 0 订阅
3 篇文章 1 订阅

说明

用Matlab COM 接口对象 来对.m文件进行调用,电脑上必须安装MATLAB软件
MLAppClass中的 Execute() 方法通过 字符串 来与Matlab进行交互;

软件环境:
C#: Visual Studio 2022 MATLAB : MATLAB R2021b

一、Visual Studio 程序

1. Vs 新建项目

第一步:打开Visual Studio 2022,新建项目,这里使用的是 控制台应用程序,给定名称、设置好路径后,点击 确定 ,创建项目。
请添加图片描述
请添加图片描述

第二步:在 解决方案资源管理器 中,右键 引用,点击 添加引用
请添加图片描述
在引用管理器中,点击左侧的 COM 选项,在搜索框中输入Matlab,添加Matlab Application的引用
请添加图片描述
添加完成后可以看到 MLApp 已经在 引用 中;
请添加图片描述

2. 编写 C# 程序

第一步:引入命名空间 MLApp ,创建 MLAppClass 对象,但是此时可能会遇到 无法嵌入互操作类型“MLAppClass”,如图:
请添加图片描述
解决办法是:在项目 引用 中的 MLApp 上右键 属性
请添加图片描述
嵌入互操作类型 修改为 False,此时编译器不再报错
请添加图片描述
第二步:通过 MLAppClassExecute() 方法对Matlab进行操作,使用的C#代码如下:

using MLApp;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            MLAppClass matlab = new MLAppClass();
            matlab.Execute(@"cd P:\MFile");//指定.m文件所在路径
            matlab.Execute("Test()");//运行函数
        }
    }
}

使用的Matlab代码如下:

function Test()
    x = -5:0.1:5;
    y = sin(x);
    plot(x,y); 
end

添加断点,点击运行,可以看到弹出MATLAB Command Window和输出的Figure图像,
请添加图片描述

二、matlab.Execute()

1. MATLAB函数的输入输出

使用如下的Matlab代码进行测试:

function res = Add(a,b)
    res = a + b;
end

使用的C#代码如下:输入量和输出量使用Array类型,且是二维矩阵

using MLApp;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            MLAppClass matlab = new MLAppClass();
            matlab.Execute(@"cd P:\MFile");

            double[,] Ar = { { 3 } }; double[,] Ai = { { 0 } };
            double[,] Br = { { 6 } }; double[,] Bi = { { 0 } };

            //对函数输入量进行赋值
            matlab.PutFullMatrix("a", "base", Ar, Ai);
            matlab.PutFullMatrix("b", "base", Br, Bi);
            //函数运行
            matlab.Execute("res = Add(a,b)");
            //获取输出数据
            Array res_r = new double[1, 1];
            Array res_i = new double[1, 1];
            matlab.GetFullMatrix("res", "base", ref res_r, ref res_i);

            Console.WriteLine($"a+b={res_r.GetValue(0,0)}");
        }
    }
}

运行结果如下图:
请添加图片描述

2. MATLAB Command Window

对于打开的 MATLAB Command Window 也可以进行交互,可以获取当前 工作区 中数据的值
请添加图片描述

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值