for文で連番の関数​を順に実行したい(初​心者です。

8 次查看(过去 30 天)
Sayaka Nojiri
Sayaka Nojiri 2019-8-7
プログラム初心者です。よろしくお願いいたします。
fun01(),fun02(),...fun10() と連番の関数が10個あります。
これらに同じ入力Inputを入れ、fun01()から順に実行したいです。
ただし、関数名はしょっちゅう変わるので、一括で指定したいしたいです。
forで文で回そうとしましたが、ans = 'fun01(INPUT)'という風に文字型で保存されてしまいました。
%%%%一括で関数名の定義%%%
fun_hed = 'fun'
in ='(INPUT)'
%%%%%%%%%%%%%%%%
for i = 1:10
ans = [fun_hed,num2str(i),IN] % ⇒ 'fun〇〇(INPUT)'の出力を得たい
...
end

采纳的回答

Kenta
Kenta 2019-8-7
for i=1:2
fun_name=sprintf('mean0%d',i);
input=[1 2 3 4 5];
in=strcat(fun_name,'(','input',')');
a(i)=eval(in);
end
a
mean01, mean02というファイルを同じディレクトリに置いて、上を実行すると、
mean01(input), mean02(input)というコマンドが実行されます。これをそちらの課題に変更すれば良いと思いますがいかがでしょうか。
  1 个评论
Akira Agata
Akira Agata 2019-8-7
関数str2funcfevalを使う方法もあります。場合によっては、こちらのほうがevalを使う方法よりも実行パフォーマンスが改善する場合があります。詳しくは下記をご参照ください。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 ループと条件付きステートメント 的更多信息

产品


版本

R2017b

Community Treasure Hunt

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

Start Hunting!