Matlab程序调用外部exe(可执行文件)方法及参数传递

时间:2022-09-30 09:19:19

如何进行matlab和c代码联合调试, 请见下帖:

http://www.matlabsky.com/thread-27585-1-1.html


原帖请见: http://www.matlabsky.com/thread-541-1-1.html


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

下面我们就对这个问题分析下!

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

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

  1. 1.传递字符串
  2. filename string (注意如果多个参数时只能使用空格分隔开,下同)

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

  5. 3.传递数组
  6. filename "[1 2 3]" "[4 5 6]"(注意每个数组必须使用"括起来)
复制代码
如果你想在matlab中调用一个应用程序,你可以使用下面的任何一个命令:system,dos,unix或者!

调用一个有输入参数的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时, 你没法直接得到返回值 。唯一的获得运行结果的办法就是让它显示在屏幕上或者把它存储在文件中。