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
採用された回答
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 件のコメント
Javier Naranjo
2017 年 10 月 10 日
Can you explain me 2>&1 what exactly does?
I used fprintf(1,..) and it did not work...
Jan
2017 年 10 月 10 日
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
2017 年 10 月 10 日
Thanks for your help.
But it seems not to work...
I just get the fprintf of the error, not the line or function
Jan
2017 年 10 月 11 日
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
2017 年 10 月 12 日
編集済み: Javier Naranjo
2017 年 10 月 12 日
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
Jan
2017 年 10 月 15 日
Javier Naranjo
2017 年 10 月 17 日
編集済み: Javier Naranjo
2017 年 10 月 17 日
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!
Jan
2017 年 10 月 17 日
Try
./matlab -r getOutput.m -nosplash -nodesktop
without the <
Javier Naranjo
2017 年 10 月 17 日
編集済み: Javier Naranjo
2017 年 10 月 17 日
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.
Jan
2017 年 10 月 18 日
Try to use quotes and provide an absolute path:
./matlab -r "~/folder1/getOutput.m" -nosplash -nodesktop
Or single quotes ' ?
Javier Naranjo
2017 年 10 月 19 日
/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
@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
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Startup and Shutdown についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
