加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何使用Matlab调用exe文件进行批量数据处理

(2016-12-23 21:40:07)
标签:

sci

科研

理工

论文

研究

有些时候,需要用Matlab调用一个.exe的程序,同时还要输入参数,并通过输入一些列参数后,得到一个最终需要的值,然后再继续让程序进入下一轮计算。

 

由于计算量大,手动输入耗时长,效率低。所以要了解一下matlab调用exe的方法。

 http://mmbiz.qpic.cn/mmbiz/ibL4SsibqaVsZ9kFtc0DtbibRJ8AkEFQoDq808rzVZYFias75U2XTh9tN7C6fhXA8QjsmWdz2beI0NdRlSzdWKtU7w/0?wx_fmt=png

1. 传递参数的函数

一般情况,exe文件都是一些独立执行的程序,不需要涉及其他输入输出。但是有时我们的确需要!

 

其实,将参数传递给一个由matlab创建的exe,与将参数传递给其它任何平台的应用程序一样。

 

下面我们先讲解下,如何在DOSUNIX中执行一个需要传递参数的应用程序。

(1) 传递字符串

filename string (注意如果多个参数时只能使用空格分隔开,下同)

 

(2) 传递数字或字母

filename num

 

(3) 传递数组

filename '[1 2 3]' '[4 5 6]'(注意每个数组必须使用'括起来)

 

如果你想在matlab中调用一个应用程序,你可以使用下面的任何一个命令:systemdosunix或者调用一个有输入参数的exematlab代码


比如sytem('myprog 1 2 3')表示执行有三个输入参数的mypro程序,三个参数分别是123(注意这里传递进去的是字符,如果不是我们需要的类型,则在程序中要进行类型转换)

 http://mmbiz.qpic.cn/mmbiz/ibL4SsibqaVsZ9kFtc0DtbibRJ8AkEFQoDq808rzVZYFias75U2XTh9tN7C6fhXA8QjsmWdz2beI0NdRlSzdWKtU7w/0?wx_fmt=png

2. 例子 

下面用例子说明。首先创建下面的m文件,并将其编译成exe文件:

function [x,y]=foo(z);

if ischar(z)

   z=str2num(z);%参数传递都是字符形式,故这里需要转化为数值型

else

   z=z;

end

x=2*z % Omit the semicolon after calculation to display the value on the screen

y=z^2;

disp(y) % Use DISP command to display the value of a variable explicitly

 

或者使用下面的命令:

function [x,y]=foo(z);

if isdeployed %判断命令的执行环境,如果是matlab环境则返回false,如果是由matlab编译的应用程序环境则返回true

   z=str2num(z);

end

x=2*z

y=z^2;

disp(y)

 

command window中输入下面的代码即可调用。

for k=1:10

   mycmd = ['foo ',num2str(k)];

   system(mycmd);%使用dos等效果一样,具体使用看帮助系统

end

 http://mmbiz.qpic.cn/mmbiz/ibL4SsibqaVsZ9kFtc0DtbibRJ8AkEFQoDq808rzVZYFias75U2XTh9tN7C6fhXA8QjsmWdz2beI0NdRlSzdWKtU7w/0?wx_fmt=png

3. 最后还是再次提醒大家

(1) 输入参数都是以字符串传递的,如果你需要得到其它类型的数据,那在m文件请在使用该参数之前进行转换,比如str2num();

 

(2) 在调用exe时,你没法直接得到返回值。唯一的获得运行结果的办法就是让它显示在屏幕上,或者把它存储在文件中。


文章转自网络,原作者已无从考证。版权归原作者所有,如涉及版权等问题,请立即联系我们,我们会予以更改或删除相关文章,保证您的权利。


(END)

http://mmbiz.qpic.cn/mmbiz/ibL4SsibqaVsZ9kFtc0DtbibRJ8AkEFQoDq808rzVZYFias75U2XTh9tN7C6fhXA8QjsmWdz2beI0NdRlSzdWKtU7w/0?wx_fmt=png

公众号:科研充电宝(原名:科学计算编点程),不定时po一些科研干货、编程中的经验教训、实用技巧、技术宅和好玩的东西,欢迎关注~ http://s12/mw690/005vPBqkzy77no1CUK72b&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有