C#调用matlab函数问题总结

3 篇文章 0 订阅

1 C#调用matlab函数

参考师兄的代码时,发现无法调用自己电脑上的matlab,创建函数类时,报如下错误:
在这里插入图片描述
重新用matlab2021编写add函数,并配置C#调用matlab环境,成功执行。在matlab生成的工程文件中,可以看到配置环境要求:
在这里插入图片描述

  • C#调用matlab操纵步骤
    在这里插入图片描述
    在这里插入图片描述
  1. 定义编写matlab函数
  2. 执行指令:deploytool
  3. 在matlab compiler中选择library compiler
  4. 选择.net assembly
  5. 添加第1步中编写的函数
  6. 定义类名,也可以默认,后续在C#中调用
  7. 点击生成工程文件,效果如下图。
    在这里插入图片描述
    打开生成的工程文件add_clover中的for_testing文件夹,效果如下,可以看到使用配置说明。
    在这里插入图片描述
    将生成的上述的两个.dll文件复制到C#工程的/bin/debug文件夹下,然后在开发环境中添加上述两个.dll引用:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2 C#调用多个matlab函数

  • 测试方法1
    上述一个.m文件对应一个函数,一个工程文件对应一个.m文件,如果C#需要调用多个matlab函数,就需要定义多个.m文件和生成多个工程文件,不是2202年该有的样子。最理想的情况是,直接将多个函数定义在一个.m文件中,函数内容如下:
    在这里插入图片描述
    按第一节中步骤生成对应的工程文件,在C#中配置后调用,发现找不到成员函数,如何改进此方法使之成功,欢迎大家批评指正!
    在这里插入图片描述
    另一方面,FuncPacks.m文件在matlab中可以方便实现多个函数的灵活调用,如下:
    在这里插入图片描述
  • 测试方法2
    上述方法行不通,只好退而求其次,定义多个.m函数文件,将这些文件生成一个工程文件,最终测试成功。麻烦在于需要定义编写多个.m文件。欢迎大家批评指正!
%% add_clover.m
function res = add_clover(p,q)
    res = p + q;
end

%% minus_clover.m
function res = minus_clover(p,q)
    res = p - q;
end

%% multiply_clover.m
function res = multiply_clover(p,q)
    res = p * q;
end

%% div_clover.m
function res = div_clover(p,q)
    if(abs(q) > 1e-6)  % 除数不为0
        res = p / q;
    else
        res = 0;
    end
end

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值