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

7 visualizaciones (últimos 30 días)
Sayaka Nojiri
Sayaka Nojiri el 7 de Ag. de 2019
Comentada: Akira Agata el 7 de Ag. de 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

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre ループと条件付きステートメント en Help Center y File Exchange.

Productos


Versión

R2017b

Community Treasure Hunt

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

Start Hunting!