MATLAB Answers

関数がどの Toolbox で提供されているかを​調べるにはどうすれば​よいですか?

198 ビュー (過去 30 日間)
MATLAB の プログラムを別々のライセンスを持つ複数人で使用することを検討しています。
そのため、プログラム内で使用されている関数がどの Toolbox に含まれるのか確認したいのですが、その方法を教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2020 年 12 月 11 日
編集済み: MathWorks Support Team 2020 年 12 月 21 日
次のいずれかの方法で、関数がどのToolbox で提供されているかを調べることができます。
1. ファイルに含まれる関数を一度に調べる場合 (※いずれもToolbox がインストールされている場合)
   1) license 関数による方法
   2) matlab.codetools.requiredFilesAndProducts 関数による方法(R2014a 以降)
   3) 依存関係レポート(Dependency Report)による方法 (R14以降)
2. 関数を1つずつ調べる場合
   1) which コマンド による方法 (※Toolbox がインストールされている場合)
   2) Web のドキュメンテーションによる検索
それぞれの方法について説明します。
1. ファイルに含まれる関数を一度に調べる場合
1) license 関数による方法(※Toolbox がインストールされている場合)
MATLAB を起動し、ライセンスを確認したい MATLAB プログラムを実行後、以下のコマンドを実行します。
>> license('inuse')
上記コマンドを実行すると、MATLAB 起動後から、license コマンド実行までに使用されたライセンス製品がコマンドウィンドウ上に表示されます。
なお、この際表示される製品名は、正式名称でない場合もありますのでご注意ください。例えば、次のようなものがあります。\n
表示名 正式名
-------------------------------------------------
control_toolbox Control System Toolbox
image_toolbox Image Processing Toolbox
signal_toolbox Signal Processing Toolbox
(補足)
この方法では、Simulink モデルに含まれるブロックがどの Blockset に含まれるかを確認することも可能です。
2) matlab.codetools.requiredFilesAndProducts 関数による方法(R2014a 以降)
この関数では、指定されたファイルの実行に必要となる、MATLAB プログラムのリスト、および MathWorks 製品名のリストを出力します。
例えば、以下のように Image Processing Toolbox の関数 edge に必要となるファイルと製品を判別します。
>> [fList,pList] = matlab.codetools.requiredFilesAndProducts('edge.m')
fList =
  0×0 の空の cell 配列
pList = 
  フィールドをもつ 1×2 の struct 配列:
    Name
    Version
    ProductNumber
    Certain
fList は空のため、必要となるファイルリストはありませんが、pList には 1x2 の構造体が出力されており、必要となる可能性のある製品が 2 つあることを示します。
詳細は、以下のように確認することができます。
>> [{pList.Name}', {pList.Certain}']
ans =
  2×2 の cell 配列
    'MATLAB'                      [1]
    'Image Processing Toolbox'    [1]
Name フィールドには必要となる製品名、Certain フィールドには、その必要性を示す値が出力されます。"1" の場合は、「必須」、"0" の場合は「必要な可能性がある」ことを示します。
今回の場合であれば、MATLAB と Image Processing Toolbox が必須です。
 
3) 依存関係レポート(Dependency Report)による方法 (※Toolbox がインストールされている場合,R14以降)
カレントディレクトリの「依存関係レポート(Dependency Report)機能」を使用することで、MATLAB プログラムから呼び出されている関数のインストールディレクトリが表示され、どの製品に含まれているか、確認できます。
依存関係レポートを起動するには、カレントフォルダ(カレントディレクトリ)から次の手順で選択します。
依存関係レポートを表示し、「子関数」の部分で "toolbox" と表示される関数は、オプション製品の関数を呼び出しています。
具体的にどの Toolbox に含まれるかは、関数のパスから判断する必要がありますが、上記の結果の場合、
samp1.m には、「\shared\optimlib\fmincon.m」 => Optimization Toolbox の関数
samp2.m には、「\images\imuitools\imtool.m」 => Image Processing Toolbox の関数
が使用されていることがわかります。
2.関数を1つずつ調べる場合
1) which コマンド による方法 (※Toolbox がインストールされている場合)
which コマンドにより、関数を定義しているファイルのパスを確認することで、関数がどのToolboxで提供されているかを確認することができます。
例えば、関数tf について調べる場合、"tf"を引数として、whichコマンドを実行します。
>> which tf
C:\Program Files\MATLAB\R2006a\toolbox\control\control\@tf\tf.m % tf constructor
※ Control System Toolbox がインストールされている場合の実行例です。
結果より、<MATLAB インストールディレクトリ>\toolbox\control 内のフォルダに関数が定義されていることから、関数 tf がControl System Toolbox の関数であることが分かります。
※ R2006a における主なToolbox とインストールフォルダの対応\n
matlab MATLAB標準
control Control System Toolbox
ident System Identification Toolbox
signal Signal Processing Toolbox
comm Communications Toolbox
optim Optimization Toolbox
stats Statistics Toolbox
なお、入力変数のデータタイプにより実行するファイルが異なる場合には、同じ関数名に対して複数の定義ファイルがある場合があります。 which コマンドは、特にオプションをつけない場合、最優先の関数定義に関するファイルパスのみを表示しますので、すべての定義先を確認したい場合には、-all オプションをつけて whichコマンドを実行します。
>> which -all tf
C:\Program Files\MATLAB\R2006a\toolbox\control\control\@tf\tf.m % tf constructor
C:\Program Files\MATLAB\R2006a\toolbox\control\control\@lti\tf.m % lti method
C:\Program Files\MATLAB\R2006a\toolbox\ident\ident\@idmodel\tf.m % idmodel method
C:\Program Files\MATLAB\R2006a\toolbox\ident\ident\@idfrd\tf.m % idfrd method
※ Control System Toolbox と System Identification Toolbox がインストールされている場合の実行結果です。
2) Web のドキュメンテーションによる検索
MATLAB およびオプション製品のドキュメンテーションが以下の URL からご覧いただけます。
画面右上の検索部分で、関数名を検索していただくことが可能です。
● MATLAB ドキュメンテーション
https://jp.mathworks.com/help/index.html
また、各製品のドキュメントでは、その製品に含まれる関数リストが提供されています。
例えば、MATLAB では以下の URL にてご覧いただけます。
・MATLAB 関数(アルファベット順)

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!