• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#调用matlab动态链接库

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、C#调用matlab程序方法

步骤一:在MATLAB中建一个m文件(test.m)

***注意,.m文件名随意,function函数名随意***

该程序用于模拟生成雷克子波,并绘图,代码如下:

function  test()

f=250;

ts=0.4502/f;

T=ts;

number=100;

t=-number/2:1:number/2;

a=(1-2*(pi*f*t*T).^2).*exp(-(pi*f*t*T).^2);

plot(t,a);

步骤二:生成dll动态链接库

MATLAB R2014a中输入deploytool命令,

 

 

选择“Library Compiler”,打开动态链接库编译器

 

1、        在“applicationtype”中选择要生成的链接库类型。  选择.NET Assembly”

2、        “exportedfunctions”中选择,函数所在的.m文件,即我们刚刚创建的test.m文件。

3、        为该类名起一个见名知意的名字,如ricker,默认为class1.

4、        点击右上角对号.

5、        开始编译


此时显示成功。生成成功后会自动打开生成文件所在路径


打开“…..noly”文件,如下,我们只需要第一个dll文件。创建.net程序时,引用该dll即可


步骤三:C#程序中调用MATLAB程序(dll)

1、创建一个  windows窗体应用程序


2"引用"右击,选择浏览,找到test.dll,添加。
"
引用"右击,选择浏览,找到MWArray.dllmatlab安装路径\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll,添加

3、在界面添加一个button按钮,在这个按钮的点击事件中调用dll中的函数。

 

private voidbutton1_Click(object sender, EventArgs e)

        {

//new一个test

            test.Ricker st = new test.Ricker();

            st.test();//调用matlab中的定义的function

        }

步骤四:实现效果


点击button按钮


2、使用deploytool命令打开compiler面板

生成dll时,会出现如下图所示错误


原因是matlab未完全**,2014a的**办法:
http://pan.baidu.com/s/1qWFbOjq,提取码84rg ,下载后解压,把“..\Matlab64\bin\win64”目录下的compiler.dllmcc.exelibmwservices.dll 三个文件复制到matlab安装目录对应位置替换原文件即可!(如果软件是32位,则对应目录为“..\Matlab32\bin\win32”


3、常见问题

MathWorks.MATLAB.NET.Arrays.MWNumericArray"的类型初始值设定项引发异常


我在自己的电脑上(x86)上运行没有问题,我程序放到一台(x64)电脑上运行出错,如上。解决办法将项目平台改为(x64即可)。当然64位系统上也安装了matlab。


一般而言出现上述异常,都是平台不兼容导致的。

转自:https://blog.csdn.net/fxm720505/article/details/51382547


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab利用图像的属性编辑器进行修改图片发布时间:2022-07-18
下一篇:
Delphi对话框实现源码分析发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap