我在 matlab 中有一个独立的应用程序。它获取一个文件名作为输入并且需要运行这个文件。该文件与独立应用程序位于同一路径。
谢谢,迈克。
听起来您正在寻找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);
我想我问了一个完全相同的问题,但无法得到答案。
我相信这是不可能的,因为 Mathworks 不希望您分发免费的 Matlab 解释器。我想知道是否可以分别编译两组 M 文件并从第一个文件中运行第二个文件作为解决方法。
您可以使用该-a
选项编译其他文件。
例如,使用此命令,您将能够从独立应用程序调用当前目录中的任何 .m 文件:
mcc -m myscript.m -a *.m