Not same fprintf MATLAB and Linux Console

Hello everybody,
I am trying to catch an error and I have made the following code in Matlab:
catch ME
% Some error occurred if you get here.
errorMessage1 = sprintf('Error in function %s()\n',ME.stack.name);
errorMessage2 = sprintf('Error in line %d\n',ME.stack(1).line);
errorMessage3 = sprintf('Error %s()\n',ME.message);
fprintf(2,'-----------------------------\n');
fprintf(2,'%s\n', errorMessage1);
fprintf(2,'-----------------------------\n');
fprintf(2,'%s\n', errorMessage2);
fprintf(2,'-----------------------------\n');
fprintf(2,'%s\n', errorMessage3);
The output of Matlab is the following one:
Error in hello()
Error in line 386
Error Index exceeds matrix dimensions.()
But, when I execute matlab from de Linux console:
./matlab < hello.m
I just get this output:
Index exceeds matrix dimensions
I cannot see the line or the .m I am running.
What kind of problem is this?
Thanks in advance,
Javi

 Respuesta aceptada

Jan
Jan el 10 de Oct. de 2017
Editada: Jan el 10 de Oct. de 2017
If you write the message to stderr by
fprintf(2, '%s\n', errorMessage1);
you have to catch this channel also. Try:
fprintf(1, '%s\n', errorMessage1);
Perhaps this works instead, but I cannot try it currently and hopefully someone corrects me:
matlab -r hello.m 2>&1

12 comentarios

Javier Naranjo
Javier Naranjo el 10 de Oct. de 2017
Can you explain me 2>&1 what exactly does?
I used fprintf(1,..) and it did not work...
Jan
Jan el 10 de Oct. de 2017
But 2>&1 works? I did not work with Linux for 20 years now...
This redirects the stream 2 (stderr) to 1 (stdout). See https://en.wikipedia.org/wiki/Redirection_(computing).
Do you see that I have used "matlab -r hello.m" instead of "matlab < hello.m"?
Javier Naranjo
Javier Naranjo el 10 de Oct. de 2017
Thanks for your help.
But it seems not to work...
I just get the fprintf of the error, not the line or function
Jan
Jan el 11 de Oct. de 2017
This is not clear: What exactly is "the fprintf of the error"? Do you get any output from stdout? I'm surprised that fprintf(1, ...) does not work.
Javier Naranjo
Javier Naranjo el 12 de Oct. de 2017
Editada: Javier Naranjo el 12 de Oct. de 2017
The problem is that when I execute the script in MATLAB and I get an error I can see the 3 fprintf in the console (MATLAB console) (errorMessage1, errorMessage2,...)
On the other hand, when I execute in the Linux Console ./matlab < hello.m and I get an error it does not show any of the errorMessage and I only get for example: Index exceeds matrix dimensions.
I do not see the fprintf of the line or the function.
Thanks for your help
Javier Naranjo
Javier Naranjo el 17 de Oct. de 2017
Editada: Javier Naranjo el 17 de Oct. de 2017
Thanks you so much! It worked! I am running hello.m from another script that opens and closes a diary.
The little problem now is that I get:
No MATLAB command specified
in the Linux Console when I run:
sudo ./matlab -r < getOutput.m -nosplash -nodesktop
It seems to be a warning... any idea how to solve this issue?
Thanks again!
Try
./matlab -r getOutput.m -nosplash -nodesktop
without the <
Javier Naranjo
Javier Naranjo el 17 de Oct. de 2017
Editada: Javier Naranjo el 17 de Oct. de 2017
If I do not write down "<" and I execute
./matlab -r folder1/getOutput.m -nosplash -nodesktop
It turns:
not variable or function folder1
and it stays in an infinite loop.
Try to use quotes and provide an absolute path:
./matlab -r "~/folder1/getOutput.m" -nosplash -nodesktop
Or single quotes ' ?
/folder1/getOutput.m
|
Error: Unexpected MATLAB operator.
I tried with single and doble quotes and it did not work.. When I write down double it says too many input arguments.
Thanks
Jan
Jan el 19 de Oct. de 2017
Editada: Jan el 19 de Oct. de 2017
@Javier: Sorry, my mistake.
./matlab -r "cd('~/folder1'); getOutput" -nosplash -nodesktop
The parameter of the -r command must contain a valid Matlab command, not the path of a m-function. You can find more details in the documentation: https://www.mathworks.com/help/matlab/matlab_env/startup-options.html

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Startup and Shutdown en Centro de ayuda y File Exchange.

Preguntada:

el 10 de Oct. de 2017

Editada:

Jan
el 19 de Oct. de 2017

Community Treasure Hunt

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

Start Hunting!

Translated by