MATLAB:如何在使用unix()命令后保持终端状态?

时间:2017-07-30 02:42:30

标签: linux matlab unix

使用unix命令后,Matlab运行脚本并关闭终端,清除终端中的所有变量。在这个简化的例子中,如果我运行:

[status1,cmdout1]=unix('NUM=100'); %//create variable NUM and assign value 100 to it
[status2,cmdout2]=unix('echo $NUM'); %//display variable value

两个命令都会成功运行,但cmdout2将是一个空字符串。为了缓解这个问题,我可以在一个unix块中运行这两个命令,例如:

[status,cmdout]=unix('NUM=100;echo $NUM');

所以在将100分配给NUM后,终端未关闭,我会在100中看到cmdout。但是,对于我的应用程序来说,不可能因为需要在Matlab中进行一些中间处理。那么,问题是,如何在运行unix命令后保留终端和所有变量?

1 个答案:

答案 0 :(得分:2)

MATLAB在原始matlab进程的环境中执行外部命令。您可以尝试使用setenv来修改matlab环境。

>> setenv('NUM','100');
>> [status,cmdout] = unix('echo $NUM')
status = 0
cmdout = 100

所有后续命令也能够看到NUM变量的新值。