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

matlab调用exe程序

(2014-04-23 09:23:03)
标签:

调用exe

输入参数

分类: matlab
(1)该exe程序运行时不带参数,并且运行完毕后自动关闭程序窗口。这种情况下比较好办,利用!就可以完成,比如对名为stable.exe的程序运行10次,就可以写为:
for i=1:10
!stable.exe;

end
感叹号!操作符表示本行剩余的输入都是操作系统的命令或是调用其他可执行的程序。
对于DOS程序或操作系统程序还分别可用“dos”、“system”命令来执行。

dos函数语法:
dos command 
status = dos(command) 
status = dos(command &) 
[status,result] = dos(command) 
[status,result] = dos(command,'-echo') 

system函数语法:
    system('command')
    [status, result] = system('command')
    [status,result] = system('command','-echo') 
The & character has special meaning. For console programs this causes the console to open.  Omitting this character causes console programs to run iconically. For GUI programs, appending this character causes the application to run in the background. MATLAB continues processing.

Example 1:执行DOS命令cd
[status currdir] = system('cd')
status =
    0
currdir =
    D:\work\matlab\test
Example 2:打开命令行程序
status = system('cmd &')

(2)exe程序需要输入参数。可以用dos,system函数。
下面我们先讲解下,如何在DOS和UNIX中执行一个需要传递参数的应用程序。
  1. 1.传递字符串
  2. filename string (注意如果多个参数时只能使用空格分隔开,下同)

  3. 2.传递数字或字母
  4. filename num

  5. 3.传递数组
  6. filename "[1 2 3]" "[4 5 6]"(注意每个数组必须使用"括起来)
复制代码

调用一个有输入参数的exe程序的matlab代码必须是字符串形式,比如sytem('myprog 1 2 3')表示执行有三个
输入参数的mypro程序,三个参数分别是1,2,3(注意这里传递进去的是字符,如果不是我们需要的类型,则在程序中要进行类型转换)。

下面我们用例子说明
  1. %============首先创建下面的m文件,并将其编译成exe文件====================
  2. function [x,y]=foo(z);
  3. if ischar(z)
  4. z=str2num(z);%由于参数传递都是字符形式,这里必须将其转为数值型
  5. else
  6. z=z;
  7. end
  8. x=2*z % Omit the semicolon after calculation to display the value on the screen
  9. y=z^2;
  10. disp(y) % Use DISP command to display the value of a variable explicitly

  11. %========或者使用下面的命令==========

  12. function [x,y]=foo(z);
  13. if isdeployed%判断命令的执行环境,如果是matlab环境则返回false,如果是由matlab编译的应用程序环境则返回true
  14. z=str2num(z);
  15. end
  16. x=2*z 
  17. y=z^2;
  18. disp(y) 

  19. ==============在command window中输入下面的代码=================

  20. for k=1:10
  21. mycmd = ['foo ',num2str(k)];
  22. system(mycmd);%使用dos等效果一样,具体使用看帮助系统
  23. end
复制代码
最后再次提醒大家
1.输入参数都是以字符串传递的,如果你需要得到其它类型的数据,那在M文件请在使用该参数之前,进行转换,比如 str2num()

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

代码:system(['*.exe ' param_str]);


0

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

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

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

新浪公司 版权所有