How do I pass the correct string for a function input parameter?
18 ビュー (過去 30 日間)
古いコメントを表示
For example, I want to debug a mex file using valgrind in a linux terminal and need to pass in a string using the following command, how should I properly ensure that the function input parameters are of the string type?
I.e. how do I nest string double quotes within a string in matlab function imput arguments?
Using Valgrind
matlab -nojvm -nosplash -r "myMexMatlabFunc(myParams)" -D"valgrind --tool=memcheck --leak-check=yes --log-file=valMatlabLog"
note: myParams is string type params.
I tried adding the following double quotes to the input parameters but it didn't work.
matlab -nojvm -nosplash -r "myMexMatlabFunc(""./imageViewSt.yml"")" -D"valgrind --tool=memcheck --leak-check=yes --log-file=valMatlabLog2"
myMexMatlabFunc(./imageViewSt.yml)
|
Invalid use of operator.
4 件のコメント
Ran Yang
2023 年 4 月 11 日
Oh, that's a Linux terminal problem. Try using \".
-r "myMexMatlabFunc(\"./imageViewSt.yml\")"
採用された回答
Ran Yang
2023 年 4 月 11 日
編集済み: Ran Yang
2023 年 4 月 11 日
In a Linux terminal, you can use a backslash (\) within quotes to escape formatting, which allows you to put quotes within quotes.
-r "myMexMatlabFunc(\"./imageViewSt.yml\")"
will be interpreted as:
-r "myMexMatlabFunc("./imageViewSt.yml")"
and allows you to pass strings into Matlab this way.
3 件のコメント
Ryan Livingston
2023 年 4 月 12 日
To make this simpler to think about, I put anything non-trivial in a script or function and then just call that with -r myFunctionOrScript or -batch myFunctionOrScript. That helps you avoid the need to deal with shell quote escaping and the like.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Install Products についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!