関数ハンドルと配列の組み合わせについて
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
HIronori Kamachi
am 11 Apr. 2019
Kommentiert: HIronori Kamachi
am 11 Apr. 2019
関数ハンドルと配列の組み合わせについて関数ハンドルと配列の組み合わせについてご教示ください
自分で定義した関数のパラメータを種々変更し、出力を得ることを考えています。
その際、パラメータを例えば[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 Kommentare
Akzeptierte Antwort
madhan ravi
am 11 Apr. 2019
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
Weitere Antworten (1)
Kazuya
am 11 Apr. 2019
どこまで汎用的に使えるかわかりませんが
fh1=@(x) x(1)*log10(x(2)*x(3))
とすれば
param1=[10,10,10];
fh1(param1)
と実行できますが、どうでしょう?
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!