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

조회 수: 10 (최근 30일)
Katsuto Tsujimoto
Katsuto Tsujimoto 2020년 3월 27일
댓글: Katsuto Tsujimoto 2020년 3월 27일
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ループを使うのが一般的なのでしょうか。
助言いただければ幸いです。

채택된 답변

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

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 構造体에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!