[解決済み] matlabで関数ハンドルを使った操作
質問事項
以下の問題について、ご教授ください。以下のような関数のハンドルがあります。
r1 = @(lambda) b + lambda*(r - b); % r and b are vectors of return data
私は、平均関数をゼロにする最適なラムダを、その関数内の与えられた累乗のセットに対して見つけたいのです。私は何をしようとし、動作しませんでした、それは私に 'function_handle' 型の入力引数のための未定義の演算子のためのエラーを返します。
lambda0 = 0.3;
for a = 2:10 %power coefficient
S1(a) = fzero(mean((r - b)*r1.^(1/(a - 1))),lambda0);
end
この問題を解決する方法について、何か提案があれば、ぜひお願いします。よろしくお願いします。
解決方法は?
fzero
は最初の入力として関数ハンドルを受け取ります。今のままでは、最初の入力としてステートメントを渡そうとしていることになります。このステートメントは、関数ハンドルに対して数値演算を行おうとしているため、正しく評価することすらできません(これについては、もう少し詳しく説明します)。
代わりに、このようなことをする必要があります。 新しい を評価する関数ハンドルです。 オリジナル 関数ハンドルで、必要な他の操作を実行します。
S1(a) = fzero(@(lambda)mean((r - b)*r1(lambda).^(1/(a - 1))),lambda0);
その他の説明
関数ハンドルに対する操作の実行は ではない は、結果に対して実行するのと同じです。
つまり、例えば、関数ハンドルがあったとします。
func = @(x)2*x;
を入力値として呼び出すことで、これを評価する。
x
func(2)
4
これは期待したとおりに動作します。もし今、私たちが本当にその値
(2*x)^2
質問であなたが書いたように書いてみましょう。
func2 = func^2;
エラーが出ます!
<ブロッククオートfunction_handle' 型の入力引数に対して未定義の演算子 '^' があります。
これは、MATLAB が
^
演算を
関数ハンドル
そのものであり
評価された関数ハンドルの値
.
その代わりに 新しい 関数ハンドルは、本質的に他のハンドルをラップし、任意の追加オプションを実行します。
func2 = @(x)func(x)^2;
func2(2)
16
フル回転させる
さて、質問に戻ると、あなたは匿名関数を定義しました。
r1
このように
r1 = @(lambda) b + lambda*(r - b); % r and b are vectors of return data
これはすべて素晴らしく見えます。入力引数が1つあり
r
と
b
を親ワークスペースから取得します。
これで
fzero
は、新しい関数ハンドルを作成することを期待して、この関数ハンドルに対して操作を実行しようとします。
mean((r - b)*r1.^(1/(a - 1)))
先ほど示したように、これとよく似たエラーが発生します。
<ブロッククオートfunction_handle'型の入力引数に対して未定義の演算子.^があります。
そこで、これを新しい関数にラップする必要があります。
newfunc = @(lambda)mean((r - b)*r1(lambda).^(1 / (a - 1)));
これで、安全に
fzero
.
result = fzero(newfunc, lambda0);
関連
-
[解決済み】「Index exceeds the number of array elements (1)」というエラーを修正するにはどうすればよいですか?
-
[解決済み] KroneckerDelta - matlab
-
[解決済み] Matlabでシンプソンの1-3 (h / 3)メソッド
-
[解決済み] Matlabによる最急降下法の実装
-
[解決済み] MATLABでマシンイプシロンを計算する方法は?
-
[解決済み] 匿名関数の微分
-
[解決済み] Matlabでファイル名を変更する - movefileがファイルの代わりにフォルダを作成する
-
[解決済み] matlabでchi2gof関数を理解する
-
[解決済み] RGBカラーによるMATLABプロット
-
[解決済み] MATLABのコードヘルプです。バックワードオイラー法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MATLABの&と&&の違いは何ですか?
-
[解決済み] MATLABで軸の制限をグローバルに設定し、プロットされたデータの最小値と最大値にする方法は?
-
[解決済み] Matlabのstrcat関数が空白を含んでいる場合のトラブル
-
[解決済み] matlabでrandnを持つ確率変数の範囲はどうなっていますか?
-
[解決済み] Matlab: 逆コサイン(acos)の完全解を返す
-
[解決済み] 単純論理条件フラグ MATLAB
-
[解決済み] プロットを回転させる?
-
[解決済み] Matlab - 連立方程式を解くときにvpasolveエラーが発生する
-
[解決済み] 匿名関数の微分
-
[解決済み] 入力引数が多すぎる Matlab ode45