matlab script in batch from unix command line?
Show older comments
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 Comments
Lester Ingber
on 5 May 2020
Walter Roberson
on 5 May 2020
#!/opt/matlab/2018a/bin/matlab -nodesktop
Perhaps
Lester Ingber
on 5 May 2020
Edited: Lester Ingber
on 5 May 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
on 5 May 2020
When using -r I recommend adding a try/catch:
matlab -nodisplay -nosplash -r "try; addpath(${ARG2}); function(${ARG1}); catch ME;end; quit"
Answers (0)
Categories
Find more on Octave in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!