使用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
命令后保留终端和所有变量?
答案 0 :(得分:2)
MATLAB在原始matlab
进程的环境中执行外部命令。您可以尝试使用setenv
来修改matlab环境。
>> setenv('NUM','100');
>> [status,cmdout] = unix('echo $NUM')
status = 0
cmdout = 100
所有后续命令也能够看到NUM
变量的新值。