0

我在 matlab 中有一个独立的应用程序。它获取一个文件名作为输入并且需要运行这个文件。该文件与独立应用程序位于同一路径。

谢谢,迈克。

4

3 回答 3

0

听起来您正在寻找SYSTEM功能。您可以将任何变量作为字符串传递给它:

s = 'ls';  % use 'ls' for Mac/Unix, 'dir' for Windows
[status, result] = system(s);

status是操作系统状态码(0 表示程序没有错误退出),result是程序的输出:

>> status

status =

     0

>> result

result =



total 928
-rw-r--r--   1 stew  stew       0 Jul 24  2009 PROJECT_BASE
drwxr-xr-x  48 stew  stew    1632 Mar 17  2011 analysis
-rw-r--r--   1 stew  stew    1944 Oct  4  2010 diff1
drwxr-xr-x  29 stew  stew     986 Sep 24  2011 matlab
drwxr-xr-x  11 stew  stew     374 Aug  5  2009 matlab_old
-rw-r--r--   1 stew  stew   62525 Jul  6  2010 nms.mat
-rw-r--r--   1 stew  stew  111423 Jul  7  2010 nms1.mat
drwxr-xr-x  52 stew  stew    1768 Mar  2  2010 p60_analysis
drwxr-xr-x   4 stew  stew     136 Mar 26 23:08 sims
-rw-r--r--   1 stew  stew    2212 Jan 29  2010 startup.m
-rw-r--r--   1 stew  stew  264635 Jun 13 18:22 test.bundle
-rw-r--r--   1 stew  stew     128 Sep 24  2010 testlatt.m
-rw-r--r--   1 stew  stew    4618 Jun 15  2011 tt-conn-ERRSTATE.mat
-rw-r--r--   1 stew  stew    6221 Jun 13 17:50
update_2012_June_13.bundle
drwxr-xr-x   4 stew  stew     136 Jun 13 18:28 videos

注意:如果程序不在您的可执行路径上,您可能需要指定其绝对路径:

s = '/usr/bin/ls';
[status, result] = system(s);
于 2012-07-08T17:54:07.617 回答
0

我想我问了一个完全相同的问题,但无法得到答案。

是否可以在 MATLAB 环境内部和外部执行编译代码?

我相信这是不可能的,因为 Mathworks 不希望您分发免费的 Matlab 解释器。我想知道是否可以分别编译两组 M 文件并从第一个文件中运行第二个文件作为解决方法。

于 2012-07-08T18:20:17.327 回答
0

您可以使用该-a选项编译其他文件。

例如,使用此命令,您将能够从独立应用程序调用当前目录中的任何 .m 文件:

mcc -m myscript.m -a *.m
于 2012-07-08T10:04:32.900 回答