I do note that I did find a comment that this is not possible, in
matlab script in batch from unix command line?
1 view (last 30 days)
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
jessupj
on 5 May 2020
Edited: jessupj
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)
See Also
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!