matlab代码到C++代码转化及使用全攻略

1.在matlab中输入命令:

mbuild -setup 安装编译器。(注意点:选择计算机上已有的VC/VS编译器,并输入相应的路径)

2.在matlab中输入命令:

deploytool   进入该模式

3.按新建按钮,选择C++ Shared Library,进行工程的命名,并选择路径。然后Add Files,将要转换的M文件选择好。最后,build the project,编译该M文件。编译成功后,代码会生成在指定目录的distrib文件夹下。该文件夹下生成了一个dll文件,一个头文件和一个lib文件。(这里要注意的是matlab是分32位版本和64位版本的,用相应版本matlab按照这个流程走下来生成的是相应版本的dll文件和lib文件。所以,在vs中调用的时候要调整成相应的版本。比如用64位的matlab生成的dll和lib文件要在VS中的x64平台下运行,不然会产生Link error。要注意平台的统一,VS中有些控件,比如COMM控件只支持32位,这样为了统一使用,前面也要用32位的matlab)

4.将第3步生成的文件复制到VS工程中。

将matlab/extern下的include文件夹复制到VS的工程中,并在VC++目录的包含目录中添加进去。

将matlab/extern /lib/win64/microsoft下的libmat.lib,mclmcr.lib,mclmcrrt.lib复制到VS工程中,并在链接器/输入/附加依赖项中添加这几个库

5.在代码中调用dll。

(1)初始化库   mclInitializeApplication(NULL,0)

                      xxxInitialize()   xxx为第3步生成文件的名字

(2)对mwArray的操作

如matlab中一阶小波消噪函数wden(in1,in2,in3,in4,in5,in6);    

转化后变成这样:

extern LIB_wden_CPP_API void MW_CALL_CONV wden(int nargout, mwArray& xd, mwArray& cxd, mwArray& lxd, const mwArray& in1, const mwArray& in2, const mwArray& in3, const mwArray& in4, const mwArray& in5, const mwArray& in6); 

nargout ——— 输出变量的个数

xd —— 输出变量 消躁后的信号

cxd ——输出变量 xd的子小波

lxd —— 输出变量 xd的子小波

in1 —— 输入变量 原始信号

in2 —— 输入变量 阈值选择规则 可选模式:'rigrsure','heursure','sqtwolog','minimaxi'

in3 ——输入变量 软阈值或硬阈值  可选模式: ‘s’ or 'h'

in4 —— 输入变量 阈值尺度的改变  可选模式:‘one’,'sln','mln'

in5 —— 输入变量 小波变换的层数

in6 —— 输入变量 小波类型 如'db10','sym8'

例子:要实现XD_Filter = wden(XD,‘minimaxi’,'s','mln',5,'db10');的功能 。代码如下:

const int DataNum = 5500;        
char str1[9] = "minimaxi";
char str2[2] = "s";
char str3[4] = "mln";
int  str4 = 5;
char str5[5] = "db10";
mwArray Str1(str1);
mwArray Str2(str2);
mwArray Str3(str3);
mwArray Str4(str4);
mwArray Str5(str5);
mwArray XD(DataNum, 1, mxDOUBLE_CLASS);
mwArray XD_filter(DataNum, 1, mxDOUBLE_CLASS);
mwArray cxd(DataNum,1, mxDOUBLE_CLASS);
mwArray lxd(DataNum,1, mxDOUBLE_CLASS);
XD.SetData(in, DataNum);
wden(1, XD_filter, cxd, lxd, XD, Str1, Str2, Str3, Str4, Str5);
XD_filter.GetData(out, DataNum);

 

(3)为了以后方便使用可以进一步将该工程的类写成dll形式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值