MATLAB: Comment conserver l’état du terminal après avoir utilisé la commande unix ()?

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 .