Running MATLAB with a shell script, redirecting stdin and stdout

9 次查看(过去 30 天)
Let's say I have this MATLAB function
function a = testfun(in1, in2)
a=in1+in2;
disp(a);
I would like to have a shell script that runs on Cygwin as follows:
./testscript.sh < inputforfunction.txt > outputoffunction.txt
The input file would contain in1 and in2. After running this command, the output file will contain the result of running testfun(in1,in2), namely 3 if in1=1 and in2=2, for example.
What I have till now is:
#!/bin/sh
matlab -nodesktop -nosplash -r "try, testfun($1,$2); end; quit;"
Executing the below opens MATLAB's command window, prints 40, then exits.
./testscript.sh 23 17
However, I don't know how to redirect the input to a text file, save the printed output of the MATLAB function somewhere, then redirect it to the output file.
Thanks!

回答(2 个)

Robert Cumming
Robert Cumming 2013-3-23
  1 个评论
Elias Khalil
Elias Khalil 2013-3-23
Hi Robert. Thanks for this, it inspired me to use -logfile which is similar. Still haven't got to make the redirection work though.

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2013-3-23
If you want to accept inputs from a file that has been redirected, then you need to use input() to read from the file.
  2 个评论
Elias Khalil
Elias Khalil 2013-3-23
Hey Walter, thanks. I understand that "input(msg)" asks for user input, how can this be used to read input from a file and pass it to a MATLAB function in a shell script?
Walter Roberson
Walter Roberson 2013-3-23
编辑:Walter Roberson 2013-3-23
#!/bin/sh
matlab -nodesktop -nosplash -r "try; vs = input('','s'); v =sscanf(v, '%f'); testfun(v(1),v(2)); end; quit;"
OR
#!/bin/sh
read in1 in2
matlab -nodesktop -nosplash -r "try; testfun($in1,$in2); end; quit;"

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Install Products 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by