matlab清空文件夹命令_MATLAB中调用C++程序的几种方式

b9ac9b28152f79f884006b82aded8204.png

Matalb在循环处理方面确实不如C++高效,所以有时候我们希望这些部分通过C++实现,以下介绍两种常用方法

1. 调用控制台程序

1.1 编写控制台程序

这个应该比较简单,使用VC或者VS创建一个控制台程序(Win32 Console Application)。

主函数如下:

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
  // argc – arguments’ count 参数个数
// argv – arguments’ values参数值
// envp – enviromental parameter环境参数
 
// 获取输入参数string1、string2
string sParm1 = __argv[1];
string sParm2 = __argv[2];
……
}

1.2 使用dos命令或者system命令调用

[status,cmdout] = dos(command)
[status,cmdout] = dos(command,'-echo')
 
[status,cmdout] = system(command)
[status,cmdout] = system(command,'-echo')

dos和system函数的语法一样,当需要程序运行过程中需要用户输入时加上‘-echo’即可,command为dos命令,例如调用myFun.exe,输入参数分别为string1、string2,則编写方式如下:

command = [‘myFun.exe ’ sting1 ‘ ’ string2]; 

使用这种方式调用控制台程序,一般不显示命令窗口,期间matlab处于进程运转状态,等控制台程序执行完成后,matlab命令行窗口会返回控制台程序的输出结果,方可执行后续命令。

若想令控制台窗口显示,可在command命令最后加“&”字符,Matlab调用程序后会立刻返回,控制台程序独立运行。

command = [‘myFun.exe ’ sting1 ‘ ’ string2 ‘&’]; 

2. 使用Mex函数

2.1 环境配置:

a)不需要调试:准备matlab,TDM-GCC编译软件

软件下载及配置参见网页:

https://blog.csdn.net/weixin_42660579/article/details/97389224

步骤为:

  • ① 下载对应版本
  • ② 安装并设置环境变量
  • ③ matlab下mex -setup部署验证

编写完函数后,将所有文件放到一个文件夹下去,在matlab中设置工作路径为此文件夹,使用mex ***.cpp,完成编译后直接调用即可,64位对应生成文件为**.mexw64。

b)需要调试:准备matlab,visual studio软件

Matlab中使用mex -setup命令若找不到vs可核查vs中有没有安装c++配置,或许你的matlab在vs之后安装也可能出现找不到的情况,试试重装vs的c++环境吧(如下图,使用modify模式就可以),然后在matlab里使用:mex -setup -v 查找编译环境。

其他配置参考网页:https://zhuanlan.zhihu.com/p/59998696

e7922d24cacf10ab837b9d0f3a72db61.png

注意:需要重新替换mex文件或者重新调试时,需要先clear *.mex64一下。

2.2 Mex函数编写

参考网页:https://www.cnblogs.com/Key-Ky/p/4233581.html

注意:函数中所有动态分配地址(new)需要及时释放(delete),不然会出现意想不到的奔溃,有时会崩溃有时会正常的那种。

3、缺憾

我本来打算用C++实现一段功能,同时能在matlab中查看进度那样,但尝试各种方法以后效果貌似都不理想,Mex函数中的printf信息倒是可以显示在matlab命令窗口,但也只限于数据特别大的情况,一般也就像dos命令一样,可以看到函数调用后卡住不动,完成后一下显示所有屏幕输出信息。

不过通过这次尝试,总算把Matlab调用C++的几种方式摸了一下吧,其他项目可以使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值