Après avoir utilisé la commande unix
, Matlab exécute le script et ferme le terminal en effaçant toutes les variables du terminal. Dans cet exemple simplifié, si je lance:
[status1,cmdout1]=unix('NUM=100'); %//create variable NUM and assign value 100 to it [status2,cmdout2]=unix('echo $NUM'); %//display variable value
les deux commandes s’exécuteraient correctement, mais cmdout2
serait une chaîne vide. Pour atténuer cela, je peux exécuter les deux commandes dans un seul bloc unix
, comme:
[status,cmdout]=unix('NUM=100;echo $NUM');
Ainsi, après avoir affecté 100
à NUM
, le terminal n’est pas fermé et je verrai 100
en cmdout
. Cependant, pour mon application, cela n’est pas possible, car certains traitements intermédiaires dans Matlab sont nécessaires. Donc, la question est de savoir comment conserver le terminal et toutes les variables après avoir exécuté la commande unix
?
MATLAB exécute des commandes externes dans l’environnement du processus matlab
origine. Ce que vous pouvez essayer, c’est d’utiliser setenv
pour modifier l’environnement matlab.
>> setenv('NUM','100'); >> [status,cmdout] = unix('echo $NUM') status = 0 cmdout = 100
Toutes les commandes suivantes pourront également voir la nouvelle valeur de la variable NUM
.