- ベストアンサー
Matlab/ @の意味
Matlab(超)初心者です。 コード内において、関数の引数として@がでてきたのですが、どういう意味でしょうか。 [inisttrat]=fmincon(@fun, .......) という具合です。 また、少し詳しい目の入門サイトを教えていただけると大変助かります。宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私の説明不足で申し訳ありません. 関数オブジェクトといいましたが,MATLABでは関数ハンドルと呼んでいます. それと, >最新のmatlabでは、@をつけてもつけなくともよい のでは無く,最新バージョンでは@をつけます. 関数を文字列にするのか(シングルコーティション)関数ハンドル(@)にするのかで区別します.
その他の回答 (2)
- mtblue
- ベストアンサー率100% (3/3)
MATLABを業務に使っているものです. 関数引数として@を付けるのは,M-ファイルに関数名(組込み関数M-ファイル名を含む)を渡すときに付けます(@を付けると関数オブジェクトになります).この利点としては関数と@を付けた関数を分離することにより,汎用性のある関数を作成することが出来ます. また,ちょっと古いMATLABでは関数名を引数に用いる場合は,シングルコーティション(')を付けます. 例えば, a = quad(@sin,0,pi) %正弦波を0~πまで積分 b = quad('sin',0,pi) %正弦波を0~πまで積分 は同じになります. あるいは,inline関数を使ってもかまいません. 例えば, F = inline('1./(x.^3-2*x-5)'); Q = quad(F,0,2); でも可能です.このinline関数を使う利点はいちいち関数M-ファイルを作成しなくても良いことがあるでしょうね. >少し詳しい目の入門サイト ですが,私の場合は,サイトより入門書を見て勉強しました(個人的には本のほうが見やすいの...). 例えば, 小林先生の「最新MATLABハンドブック」 や 青山先生の「最新使える!MATLAB」 なんかは良く見ます.
お礼
なるほど。では最新のmatlabでは、@をつけてもつけなくともよい、ということでしょうか?それとも自作M-file関数を関数の引数にする場合は@マークをつけなければならないということでしょうか。 参考文献のご紹介ありがとうございます。
- 2003saki
- ベストアンサー率20% (9/44)
fmincon=制約付き非線形多変数関数の最小値の探索 詳しい事は下記のページで確認してください。 http://www.cybernet.co.jp/matlab/support/manual/r13/toolbox/optim/fmincon.shtml
お礼
どうもありがとうございました。完全には理解していませんが、かなり雰囲気をつかめました。