ベクトルの各要素を関​数に渡して結果をベク​トルで取得したい

8 vues (au cours des 30 derniers jours)
Katsuto Tsujimoto
Katsuto Tsujimoto le 27 Mar 2020
a, b, c3つの引数を持つ関数myfuncがあったとして、一つの引数だけを変化させたときのmyfuncの挙動を調べたいです。
このとき、すでにあるベクトルの各要素を関数に渡し、ベクトルの形で結果を取得するようにしたいのですが、そのような関数はMatlabにあるでしょうか。
forループを使って書けば次のようになります。
res = null(10);
for i = 1:10
tmp = myfunc(i,2,3);
res(i) = tmp;
end
disp(res)
function G = myfunc(a, b, c)
G = a*b+c;
end
あるいはMATLABではこういう場合forループを使うのが一般的なのでしょうか。
助言いただければ幸いです。

Réponse acceptée

michio
michio le 27 Mar 2020
arrayfun を使って
res = arrayfun(@(x) myfunc(x,2,3), 1:10)
でもいいですし、そのままベクトルを入力してもOKな形に関数を実装していれば、
res = myfunc(1:10,2,3)
でも同じ結果になります。R2020a で試しましたが、古いバージョンだと2つ目の方法は怒られるかもしれません。
  1 commentaire
Katsuto Tsujimoto
Katsuto Tsujimoto le 27 Mar 2020
michioさま
@で無名関数を作ればよかったのですね。初歩的な質問をしてしまい恐縮ですが、
たいへん助かりました。ありがとうございます。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 構造体 dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!