BJ-项目音频处理(matlab)

目前一个音频项目需要用到Matlab,动作UI主要是C++写的,所以打算是Matlab编译成exe执行文件,然后再通过C++ 调用Matlab的执行文件,生成结果文件txt,上位机去Load;

Matlab 不动,记录一步一步的操作,以备将来只需;


1:在没有安装的电脑运行matlab的话,需要安装MCR, 其路径在安装的matlab的:[MATLAB安装目录]\toolbox\compiler\deploy\win64;文件名为“MCRInstaller.exe”; 执行步骤如下:

      1)先把这个安装在新的电脑上面;

      2)然后配置环境,点击“我的电脑”  “属性”,“高级”,“环境变量”,“添加”指定一个变量名,然后将路径C:\Program Files\MATLAB\MATLAB Compiler Runtime\v80\runtime\win64复制到里面就可以了(安装路径)。 

2:如何把Matlab编译成exe程序,首先创建m文件,然后在命令窗口输入: "mcc -m xx.m",xx.m是你需要编译的m文件,如果你想去掉matlab执行的dos窗口,可以把编译命令改为“mcc -e xx.m”;

3:Matlab读写txt文件:

    fid = fopen(文件名,‘打开方式’);

说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功。打开方式有如下选择: 
‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 
‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 
‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 
‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 
‘a’:在打开的文件末端添加数据。文件不存在则创建。 
‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 
另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。

最基本的写入txt文件方法:

%(matlab 与 C++ 类型指代相同)  %d-->int  %f-->float  %lf-->double  %s-->string
a = 4; b = 4.3; c = 'name';
fid = fopen(path,'w');
fprintf(fid,'%d %f %s\n',a,b,c);
fclose(fid);

最基本的读入txt文件大方法:

file = fopen(filename,'r');
data = fscanf(file,'%s');
flcose(file);

//2018-2-26续,发现c++ 调用matlab的话很慢,所以该用dll的形式,这样就只会是第一次比较慢

1:怎么编译成dll?

示例:将一个Matlab函数MyFun 编译成libMyFun 的命令:

mcc –W cpplib:libMyFun –T link:lib MyFun

参数说明:-W控制编译之后的封装格式,cpplib表示c++lib,冒号之后是编译输出lib名,-T表示目标,link:lib表示连接到lib的目标,MyFun是待编译的m文件名,编译成功之后,会输出三个文件:libMyFun.lib libMyFun.dll libMyFun.h


2:C++的环境配置:

  

将前面生成的mydll.dll、mydll.h和mydll.lib三个文件拷贝到新建的C++工程目录中,并将mydll.h加入工程,将并设置工程属性。

  • 项目属性——VC++目录——包含目录:

  • 项目属性——VC++目录——库目录:

 

 

  • 项目属性——链接器——输入:
mclmcrrt.lib
mydll.lib(这是自己生成的)

function[sum] = Add(n)
sum  = 0;
for i=1:n
    sum = sum + i;
end
end
//添加初始化函数
if(!AddInitialize())
{
    printf_s(“initial Matlab function fail”);
   return -1;
}

mwArray sum(1,1,mxINT32_CLASS);
mwArray n(1,1,mxINT32_CLASS);
int num = 3;
n = num;
Add(1,sum,n);
addTerminate();




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值