matlab script in batch from unix command line?
Afficher commentaires plus anciens
I have a problem with Octave:
x = dlmread('fin');
y = transpose(x);
z = fft(y);
w = ifft(z);
dlmwrite('fout',w,' ');
fin is real, but fout is complex with all data have very small imaginary parts. This seems to be a known bug:
https://savannah.gnu.org/bugs/?45932
Matlab does not have this problem with this same code. However, while I can create a script to run fine as a batch job in Octave, I cannot do this in Matlab? For example, the first line in an Octave script is
#!/opt/octave/bin/octave -qf
but I have not been able to find the Matlab counterpart. For example,
#!/opt/matlab/2018a/bin/matlab
just puts me into Matlab instead of running the script. I have tried various flags that might be like Octave's "-qf" without success?
5 commentaires
Lester Ingber
le 5 Mai 2020
Walter Roberson
le 5 Mai 2020
#!/opt/matlab/2018a/bin/matlab -nodesktop
Perhaps
Lester Ingber
le 5 Mai 2020
Modifié(e) : Lester Ingber
le 5 Mai 2020
it's not graceful, but i've done this using commands in the shell, e.g. using the matlab '-r' in version up to 2018a.
i know that's not what you're asking for, but i didn't every try to call matlab functions as shell functions.
ARG1=$(some shell commands)
ARG2='/home/user/mfiles' # directory containing function.m
matlab -nodisplay -nosplash -r "addpath(${ARG2}); function(${ARG1}); quit"
the equivalent for octave was something like
octave --no-gui --eval "addpath(${ARG2}); function(${ARG1}); quit"
this way, i could put a switch between matlab and octave (depending on which machine i was using) and not have different *.m files for each.
Walter Roberson
le 5 Mai 2020
When using -r I recommend adding a try/catch:
matlab -nodisplay -nosplash -r "try; addpath(${ARG2}); function(${ARG1}); catch ME;end; quit"
Réponses (0)
Catégories
En savoir plus sur Octave dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!