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

3 visualizzazioni (ultimi 30 giorni)
Sayaka Nojiri
Sayaka Nojiri il 7 Ago 2019
Commentato: Akira Agata il 7 Ago 2019
プログラム初心者です。よろしくお願いいたします。
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

Risposta accettata

Kenta
Kenta il 7 Ago 2019
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 Commento
Akira Agata
Akira Agata il 7 Ago 2019
関数str2funcfevalを使う方法もあります。場合によっては、こちらのほうがevalを使う方法よりも実行パフォーマンスが改善する場合があります。詳しくは下記をご参照ください。

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su ループと条件付きステートメント in Help Center e File Exchange

Prodotti


Release

R2017b

Community Treasure Hunt

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

Start Hunting!