関数ハンドルと配列の組み合わせについて
3 次查看(过去 30 天)
显示 更早的评论
関数ハンドルと配列の組み合わせについて関数ハンドルと配列の組み合わせについてご教示ください
自分で定義した関数のパラメータを種々変更し、出力を得ることを考えています。
その際、パラメータを例えば[a1,b1,c1;a2,b2,c2;...]のように配列に格納しておき、それを関数ハンドルに適用して解を[A1; A2;...]のように配列で出力しようと思い試してみましたがうまくいきません。
例えば
fh1=@(a,b,c)a*log10(b*c) と関数を定義しておき
param1=[10,10,10]; とし、
fh1(param1) とすると、
入力引数が不足しています。
エラー: @(a,b,c)a*log10(b*c) とエラーになります。
fh1(10,10,10) こうすると
ans =
20 うまくいきます。
a=10;b=10;c=10;
fh1(a,b,c) こうしても
ans = うまくいきます
20
配列に格納しておいたパラメータをループですべて変数に落として食わせればうまくいくのはわかりますが、式によってはパラメータの増減があったり、パラメータの組み合わせが多数あったりするので、配列をそのまま使えれば大変楽になるのですが、何とかうまくやる方法はないでしょうか。
0 个评论
采纳的回答
madhan ravi
2019-4-11
I would do the way as Kazuya does it but as an alternative create comma-separated list and then operate:
Example:
fh1=@(a,b,c)a*log10(b*c);
X = repelem(10,3);
x = num2cell(X); % keep an eye here
fh1(x{:}) % all in one go
更多回答(1 个)
Kazuya
2019-4-11
どこまで汎用的に使えるかわかりませんが
fh1=@(x) x(1)*log10(x(2)*x(3))
とすれば
param1=[10,10,10];
fh1(param1)
と実行できますが、どうでしょう?
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!