【发布时间】:2012-02-17 08:46:05
【问题描述】:
我有一个 matlab 文件,其中包含一个文件。我想在 matlab shell 中运行该程序,例如 prog。我需要实现它,以便它接受一些参数,例如“prog filename.txt 1 2 这意味着我可以在我的程序中使用 filename.txt 和 1 2 作为变量。
谢谢!
【问题讨论】:
-
你试过什么?到目前为止你有什么?用答案编辑您的问题。
标签: matlab
我有一个 matlab 文件,其中包含一个文件。我想在 matlab shell 中运行该程序,例如 prog。我需要实现它,以便它接受一些参数,例如“prog filename.txt 1 2 这意味着我可以在我的程序中使用 filename.txt 和 1 2 作为变量。
谢谢!
【问题讨论】:
标签: matlab
一旦你的函数被写在一个单独的文件中,正如另一个答案所讨论的那样,你可以用稍微复杂的设置来调用它,以便更容易捕获错误等。
有一个有用的建议in this thread 确保Matlab 不启动图形界面并在完成脚本后退出,如果有错误则很好地报告错误。
例如:
matlab -nodisplay -nosplash -r "try, prog(1, 'file.txt'), catch me, fprintf('%s / %s\n',me.identifier,me.message), exit(1), end, exit(0)"
如果添加了行空格,则提供给 Matlab 的脚本将如下所示:
% Try running the script
try
prog(1, 'file.txt')
catch me
% On error, print error message and exit with failure
fprintf('%s / %s\n',me.identifier,me.message)
exit(1)
end
% Else, exit with success
exit(0)
【讨论】:
为了让脚本接受来自命令行的参数,你必须先把它变成一个函数来获取你想要的参数,即如果你的脚本被命名为prog.m,放在第一行
function []=prog(arg1, arg2)
并在末尾添加end(假设该文件只有一个功能)。调用与文件同名的函数是非常重要的。
接下来你需要确保脚本文件与你调用脚本的位置相同,或者它位于 Matlab 工作路径中,否则它将无法识别你的脚本.
最后,执行你使用的脚本
matlab -r "prog arg1 arg2"
相当于调用
prog(arg1,arg2)
从 Matlab 内部。
*- 在 Windows 和 Linux 环境中测试
【讨论】:
load 的脚本(例如,保存为script.m),以便我们在MATLAB 控制台中使用script arg 调用它。