ネットでダウンロードしたMファイルに
f = inline('x^2 + y^2')
という記述があるのですが、このinline関数というものがなんなのかが良くわかりません。
ネットで調べたところ、inline関数はオーバーヘッドを避けることができるとか、オリジナル関数を定義するときに使うとかという表現を見たのですが、上の記述は単に'x^2 + y^2という関数を定義しているだけなのでしょうか。関数Mファイルを作成するのと同義なのでしょうか。その場合、inline関数を使用する利点等がなんなのか教えていただきたいと思います。
No.1ベストアンサー
- 回答日時:
プログラムでは、基本的に複数箇所で同一の処理を行う場合、サブルーチン化を行います。
MATLABでいえばM-ファイルの作成ですね。サブルーチンの処理を行う場合、普通はそのサブルーチンを呼び出すわけですが、何か特段の事情(主に処理の高速化)がある場合、呼出元のプログラムにサブルーチンのプログラムを展開することがあります。この展開されたコードを、インライン・コードといいます。
インラインコードの利点は、サブルーチンの呼び出しに必要なシステム負荷(オーバーヘッド)を無くし、処理を高速化することができることです。ですが、同じコードを複数箇所に記述するため、プログラムサイズが大きくなる、メンテナンスや保守がしにくくなるといったデメリットもあります。
以上のことを踏まえて、MATLABのinline関数を使用する利点ですが、
(1)M-ファイルにするほどではないが、複数回使用する必要のある処理をサブルーチン化できる
(2)オーバーヘッドがないという訳ではないでしょうが、M-ファイルの呼び出しに比べると軽減でき、処理が高速になる。
といったところだと思います。特に処理速度の遅いMATLABでは、(2)は死活問題になる場合もありますしね。
※インライン・コード
http://www.atmarkit.co.jp/icd/root/91/5784291.html
※オーバーヘッド
http://www.nifty.com/webapp/digitalword/word/009 …
No.2
- 回答日時:
matlabのインライン関数は、(おそらく)オーバーヘッドとか効率はM-ファイルと全然変わらないと思いますよ。
(むしろ中間言語にコンパイルされてないような感じなんで、M-ファイルより遅い可能性もあるかも)もともと、効率を上げるためにあるものではないです。
使いみちは、fzeroとか、fminsearchとか、quadとか、引数として関数を要求するコマンドで、そのためだけにわざわざM-ファイル新しく書くのは面倒なんで、その場で簡単に関数を定義できると便利、っていうことです。
http://dl.cybernet.co.jp/matlab/support/manual/r …
http://dl.cybernet.co.jp/matlab/support/manual/r …
http://dl.cybernet.co.jp/matlab/support/manual/r …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) 【スプレドシート】IMPORTRANGE関数とSUMIFSの組み合わせ 1 2023/03/05 18:17
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) RANK.EQとCOUNTIFSの組み合わせで同ポイントの場合、違う条件を加えて順位を付けたい。 1 2022/08/30 19:49
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- 数学 【数学ⅲ】三角関数と合成関数の微分について 4 2022/07/07 21:44
- 数学 関数1/(1+√x)のx=1における微分係数を微分の定義に従って求めよ。 これについて教えていただき 5 2023/07/22 19:08
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- 物理学 内積 3 2022/12/04 18:41
- 会社・職場 Excel、Googleスプレッドシートなどへのデータ入力 2 2023/07/06 05:59
- 数学 正規数の定義で分からないことがあります。 正規数の定義について専門書において 「xがr進正規であると 1 2023/07/17 20:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで2重のDoLoop関数から抜け...
-
GOSUB命令とは
-
Excel VBAで、ユーザーフォー...
-
例外処理のフローチャートの記...
-
perlの構文でカンマの意味が分...
-
オフコン(富士通Kシリーズ)...
-
VBAのサブルーチンとプロシージ...
-
LCD ディスプレイを Raspberry ...
-
VBAでoutlook365が起動しません。
-
Excel VBA 定義されたプロージ...
-
Excel VBAで、ユーザーフォーム...
-
「デバイスは PRN を初期化でき...
-
ArduinoのジャイロモジュールMP...
-
Excel VBA 標準モジュール内で...
-
エクセルVBAでシートモジュール...
-
VBAで別モジュールへの変数の受...
-
BASP21使用のメール送信でコマ...
-
VBAのバージョン管理
-
CGI::Carpを使っているのにInte...
-
pythonでファイル移動できません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
モジュールとサブルーチン
-
perlの構文でカンマの意味が分...
-
COBOLで、Shellを起動するには?
-
ACCESSのVBAでPrivate Sub ~en...
-
GOSUB命令とは
-
サブルーチンを認識しません。
-
エクセルVBAでサブルーチン...
-
ExcelVBA AddinでOnAction
-
初歩的な質問なのですが、サブ...
-
Excel VBAから利用できるフリー...
-
VBAのサブルーチンとプロシージ...
-
VBAで2重のDoLoop関数から抜け...
-
Attempt to free unreferenced ...
-
オフコン(富士通Kシリーズ)...
-
初心者です。Perlではどんな時...
-
”:”がいっぱいの文について。
-
サブルーチンやif分以外での中括弧
-
fortran95実行エラー
おすすめ情報