!(エスケープ演算子)内で変数を用いる

DNsample.exeというvisual studioでコンパイルした実行ファイルをmatlabスクリプト上で実行するため、!(エスケープ演算子)を使用しています。このファイルを実行すると、引数で指定したファイル名の画像が入手できるようになっています。
↓例
例で指定した引数の1つ目、strが得られる画像のファイル名を指しています。この例は実行可能でした。
今回、forループの中で本構文を使用し、画像のファイル名を変えていきたいのですが、エスケープ演算子内ではただの文字列として認識されるだけで、上で指定した変数を読み込んでくれているわけではなさそうです。(例の場合、ファイル名がstrとなる)
エスケープ演算子上でも変数を利用するにはどのような方法がありますでしょうか。

 采纳的回答

Kojiro Saito
Kojiro Saito 2023-5-3

1 个投票

sprintfコマンドでフルコマンドの文字列を作り、MATLABコマンドを実行するevalで感嘆符演算子付きでおこなうか、OSのコマンドが実行できるsystemコマンドで感嘆符抜きで実現できます。
evalコマンドの例
cmd = sprintf("!DNsample.exe %s 0 -2", str);
eval(cmd)
systemコマンドの例
cmd = sprintf("DNsample.exe %s 0 -2", str);
[status,cmdout] = system(cmd)

1 个评论

AKIHISA FUJII
AKIHISA FUJII 2023-5-3
>Kojiro Saito様
うまく動作させることが出来ました。とても助かりました。
ありがとうございました。

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Multidimensional Arrays 的更多信息

产品

版本

R2020b

Community Treasure Hunt

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

Start Hunting!