我有一个MATLAB函数,它对先前在工作区中加载的变量执行一些操作。例如:
do_something(A, B, C, ...);
我在MATLAB中使用n
的不同子集运行函数A, B, C ...
次。输出保存为ASCII
,以便使用C ++程序进行进一步处理。
我想说明整个过程。所以我想从shell脚本运行MATLAB函数,然后是C ++程序。例如:
matlab -nojvm -nodesktop -nosplash -r "run matlabTest"; ./c++Test;
但我意识到MATLAB函数需要一些先前未加载的变量。所以,我的问题是如何使用工作空间中的参数运行MATLAB函数? 。工作区保存在同一目录中。
我正在使用MATLAB 7.9.0(R2009b)开发Linux。
我注意到(在阅读/回顾这个问题时)我可以使用system
函数在MATLAB中运行linux命令。我已经成功地做到了这一点,但我不会怀疑如何做其他方式。
答案 0 :(得分:4)
您可以在引号中包含多个MATLAB命令,以;
分隔。你可以试试
matlab -nojvm -nodesktop -nosplash -r "mydata = 1; run matlabTest"; ./c++Test;
例如,。如果你需要很多变量,这会变得冗长或不方便,也许你可以将工作区变量保存到.mat文件(比如mydata.mat
),然后将它们加载到:
matlab -nojvm -nodesktop -nosplash -r "load mydata; run matlabTest"; ./c++Test;
PS您不需要run
,只需直接致电matlabTest
。
答案 1 :(得分:0)
为了使用nohup在Ubuntu的后台运行matlab脚本(带参数),以下命令对我有用:
void SearchObjectDescription(std::vector<std::string>& input, Player & player)
{
auto i = std::find_if(input.begin()+1, input.end(),
[&](const std::string &s) { return player.InInventory(s); });
if (i != input.end())
{
std::cout << (player.GetInventory().ItemByName(*i)).ExamineObject() << std::endl;
}
else
{
std::cout << "Object not in inventory!" << std::endl;
}
}