メインコンテンツ

find_system

R2026b

モデル、ブロック、ライン、端子、注釈を検索する

説明

Objects = find_system は、サブシステムを含む、読み込まれたモデルとそれらのブロックを返します。

Objects = find_system(Model) は、指定されたモデルとそのブロックを返します。

例

Objects = find_system(Name=Value) は、読み込まれたモデルと、1 つ以上の Name=Value のペアの引数で指定された基準を満たすそれらのモデル内のオブジェクトを返します。この構文を使用して検索条件を指定し、特定のパラメーター値を検索できます。検索条件はパラメーターと値のペアの前に指定します。

Objects = find_system(Model,Name=Value) は、指定されたモデルの指定された基準を満たすオブジェクトを返します。

例

例

すべて折りたたむ

myModel という名前の読み込み済みのモデルがあるとします。

モデル名、およびモデルに含まれるすべてのブロックのパスを取得します。

p = find_system("myModel",Type="block")

myModel という名前の読み込み済みのモデルがあるとします。モデルに含まれているすべてのブロックのハンドルを取得します。

モデル ハンドルを取得します。

hModel = get_param("myModel","Handle");

モデルに含まれているすべてのブロックのハンドルを取得します。

hBlocks = find_system(hModel,Type="block")

mySubsystem という名前の Subsystem ブロックを含む myModel という名前の読み込み済みのモデルがあるとします。サブシステムに含まれているすべての Transfer Fcn ブロックのハンドルを取得します。

Subsystem ブロックのハンドルを取得します。

hModel = get_param("myModel/mySubsystem","Handle");

サブシステムに含まれているすべての Transfer Fcn ブロックのハンドルを取得します。

hBlocks = find_system(hModel,BlockType="TransferFcn")

myModel という名前の読み込み済みのモデルがあるとします。モデル内にある、初期条件が 0 であるすべての Integrator ブロックのハンドルを取得します。

モデルのハンドルを取得します。

hModel = get_param("myModel","Handle");

InitialCondition パラメーターの値が 0 であるすべての Integrator ブロックのハンドルを取得します。

hBlocks = find_system(hModel,BlockType="Integrator",InitialCondition="0")

myModel という名前の読み込み済みのモデルがあるとします。モデル内にある、名前にキーワード speed が含まれているすべての Subsystem ブロックのハンドルを取得します。

モデルのハンドルを取得します。

hModel = get_param("myModel","Handle");

名前にキーワード speed が含まれているすべての Subsystem ブロックのハンドルを取得します。

hBlocks = find_system(hModel,Regexp="on",CaseSensitive="off",BlockType="Subsystem",Name='.*speed.*')

mySubsystem という名前の Subsystem ブロックを含む myModel という名前の読み込み済みのモデルがあるとします。サブシステムに含まれているすべての信号線のハンドルを取得します。

Subsystem ブロックのハンドルを取得します。

hModel = get_param("myModel/mySubsystem","Handle");

サブシステムに含まれているすべての信号線のハンドルを取得します。検索に信号線、端子、および注釈を含めるために、忘れずに FindAll を "on" に設定します。その後、Type を "line" に設定することで、検索を信号線のみに絞り込みます。

hLines = find_system(h,FindAll="on",Type="line")

作業結果を確認するには、サブシステムを開きます。

open_system(h);

ハンドルが hLines に格納されている信号線を強調表示します。

hilite_system(hLines)

独自のファイルに保存されている、読み込まれているすべてのモデル、ライブラリ、およびサブシステムの名前を取得します。

find_system(Type="block_diagram")

ライブラリ リンクである単一のサブシステムを含む myModel という名前のモデルがあるとします。モデルが最後に開かれた後に、ライブラリ内の対応するサブシステムに Gain ブロックが追加されています。

モデルを開きます。SearchInsideLibraryLinks を "off" に設定して find_system 関数を使用します。このコマンドは、サブシステムへのライブラリ リンクに従わず、最上位のサブシステムのみを返します。

open_system("myModel")
find_system(bdroot,SearchUnderMasks="all",'SearchInsideLibraryLinks="off")
ans = 

    'myModel'
    'myModel/Subsystem'

SearchInsideLibraryLinks を "on" に設定して find_system 関数を使用します。find_system 関数はライブラリ リンクを更新し、サブシステムのブロックを返します。

find_system(bdroot,SearchUnderMasks="all",SearchInsideLibraryLinks="on")
Updating Link: myModel/Subsystem/Gain
Updating Link: myModel/Subsystem/Gain

ans = 

    'myModel'
    'myModel/Subsystem'
    'myModel/Subsystem/Gain'

カスタム フィルター関数で定義されているように、MatchFilter引数を使用することで、検索に含める要素を指定できます。

たとえば、検索からモデルの Inport ブロックと Outport ブロックを除外するには、ファイル nonInOutBlocks.m に示されているようにカスタム フィルター関数を定義します。この関数は、各ブロックのタイプをチェックして、Inport でも Outport でもないブロックの場合にのみ true を返します。

type nonInOutBlocks.m
function match = nonInOutBlocks(handle)
match = true;
if strcmp(get_param(handle, 'Type'), 'block')
  blockType = get_param(handle, 'BlockType');
  if strcmp(blockType, 'Inport') || ...
        strcmp(blockType,  'Outport')
      match = false;
  end
end
end

このフィルターを slexVariantSubsystemEnableChoice モデルに適用するには、find_system コマンドで関数ハンドルを MatchFilter 引数の値として指定します。

load_system("slexVariantSubsystemEnableChoice");
blks = find_system("slexVariantSubsystemEnableChoice","MatchFilter",@nonInOutBlocks)
blks = 12×1 cell
    {'slexVariantSubsystemEnableChoice'                                     }
    {'slexVariantSubsystemEnableChoice/Controller'                          }
    {'slexVariantSubsystemEnableChoice/Controller/Enable'                   }
    {'slexVariantSubsystemEnableChoice/Controller/Linear'                   }
    {'slexVariantSubsystemEnableChoice/Controller/Linear/Enable'            }
    {'slexVariantSubsystemEnableChoice/Controller/Linear/Discrete Filter'   }
    {'slexVariantSubsystemEnableChoice/Controller/Nonlinear'                }
    {'slexVariantSubsystemEnableChoice/Controller/Nonlinear/Enable'         }
    {'slexVariantSubsystemEnableChoice/Controller/Nonlinear/Discrete Filter'}
    {'slexVariantSubsystemEnableChoice/Controller/Nonlinear/Lookup Table'   }
    {'slexVariantSubsystemEnableChoice/Sine Wave'                           }
    {'slexVariantSubsystemEnableChoice/help'                                }

Simulink® には、モデル内のバリアント ブロックの検索に使用できる組み込み関数が用意されています。詳細については、MatchFilterを参照してください。

slexVariantSubsystems モデルを読み込みます。

model = 'slexVariantSubsystems';
load_system(model);
assignin('base','VSS_MODE',2);

Simulink.match.activeVariants 関数を使用して、モデルのコンパイル後にシミュレーションでアクティブなブロックを検索します。

set_param(model,'SimulationCommand','update');
find_system(model,'MatchFilter',@Simulink.match.activeVariants);

Simulink.match.codeCompileVariants 関数を使用して、モデルのコンパイル後に生成 C コードの一部であるブロックを検索します。

slexVariantSubsystems([],[],[],'compileForCodegen');
find_system(model,'MatchFilter',@Simulink.match.codeCompileVariants);
slexVariantSubsystems([],[],[],'term');

メモ: 正しい結果を得るには、Simulink.match.activeVariants フィルターと Simulink.match.codeCompileVariants フィルターを使用する前に、"モデルをコンパイルする" 必要があります。モデルがコンパイルされない場合、これらのフィルターによってモデル内のすべてのブロックが返されます。

関数 Simulink.match.allVariants を使用して、バリアントが原因でブロックがアクティブか非アクティブかに関係なく、すべてのブロックを検索します。

find_system(model,'MatchFilter',@Simulink.match.allVariants);

バリアント サブシステムの選択肢内のシミュレーションでアクティブなブロックと生成コードの一部であるブロックを検索に含めるには、編集時フィルター関数 Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices を使用します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。

find_system(model, ...
 'MatchFilter',@Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices);

バリアント サブシステムのアクティブな選択肢内のブロックを検索に含めるには、編集時フィルター関数 Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices を使用します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。

find_system(model, ...
 'MatchFilter',@Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices);

関数 Simulink.match.variantAssemblySubsystems を使用して、slexVariantAssemblySubsystemWithMaskInLabel モデル内のすべての Variant Assembly Subsystem ブロックを検索します。

load_system('slexVariantAssemblySubsystemWithMaskInLabel');
find_system('slexVariantAssemblySubsystemWithMaskInLabel','MatchFilter',@Simulink.match.variantAssemblySubsystems);

この例では、バリアント ブロックを検索するための find_system の組み込みのMatchFilter関数について、コンパイル前とコンパイル後の結果を比較します。シミュレーションでアクティブなバリアント ブロックの検索や生成コードの一部であるバリアント ブロックの検索には、次のフィルターが役立ちます。

  • Simulink.match.activeVariants

  • Simulink.match.codeCompileVariants

  1. モデル slexVariantSubsystems を開きます。このモデルは Embedded Coder® を使用してコードを生成するように構成されており、ERT ベースのシステム ターゲット ファイル ert.tlc を使用しています。

model="slexVariantSubsystems";
open_system(model);

2. "Controller" ブロックの VariantActivationTime パラメーターを code compile に設定します。このアクティベーションのタイミングでは、Embedded Coder を使用して生成されるコードにアクティブと非アクティブの両方のバリアント選択肢が含まれます。

set_param('slexVariantSubsystems/Controller','VariantActivationTime','code compile');

3. Controller ブロックの選択肢について、TreatAsAtomicUnit パラメーターを on に設定します。この手順は、"Controller" ブロックに code compile のアクティベーションのタイミングを使用するために必要です。

set_param('slexVariantSubsystems/Controller/Linear Controller', 'TreatAsAtomicUnit', 'on');
set_param('slexVariantSubsystems/Controller/Nonlinear Controller', 'TreatAsAtomicUnit', 'on');

モデルのコンパイル前の find_system の結果

モデルのコンパイル前に組み込みのマッチ フィルターを使用すると、ブロックのバリアントのアクティブ性に関係なく、モデル内のすべてのブロックが返されます。

find_system(model,MatchFilter=@Simulink.match.activeVariants)
ans = 25×1 cell
    {'slexVariantSubsystems'                                                   }
    {'slexVariantSubsystems/Controller'                                        }
    {'slexVariantSubsystems/Controller/sensor1'                                }
    {'slexVariantSubsystems/Controller/sensor2'                                }
    {'slexVariantSubsystems/Controller/sensor3'                                }
    {'slexVariantSubsystems/Controller/Linear Controller'                      }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor1'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor2'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor3'              }
    {'slexVariantSubsystems/Controller/Linear Controller/Add'                  }
    {'slexVariantSubsystems/Controller/Linear Controller/Discrete↵Transfer Fcn'}
    {'slexVariantSubsystems/Controller/Linear Controller/Out1'                 }
    {'slexVariantSubsystems/Controller/Nonlinear Controller'                   }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor1'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor2'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor3'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/1-D Lookup Table'  }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/Add'               }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/Out1'              }
    {'slexVariantSubsystems/Controller/Out1'                                   }
    {'slexVariantSubsystems/Scope'                                             }
    {'slexVariantSubsystems/sine1'                                             }
    {'slexVariantSubsystems/sine2'                                             }
    {'slexVariantSubsystems/sine3'                                             }
    {'slexVariantSubsystems/Out1'                                              }

find_system(model,MatchFilter=@Simulink.match.codeCompileVariants)
ans = 25×1 cell
    {'slexVariantSubsystems'                                                   }
    {'slexVariantSubsystems/Controller'                                        }
    {'slexVariantSubsystems/Controller/sensor1'                                }
    {'slexVariantSubsystems/Controller/sensor2'                                }
    {'slexVariantSubsystems/Controller/sensor3'                                }
    {'slexVariantSubsystems/Controller/Linear Controller'                      }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor1'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor2'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor3'              }
    {'slexVariantSubsystems/Controller/Linear Controller/Add'                  }
    {'slexVariantSubsystems/Controller/Linear Controller/Discrete↵Transfer Fcn'}
    {'slexVariantSubsystems/Controller/Linear Controller/Out1'                 }
    {'slexVariantSubsystems/Controller/Nonlinear Controller'                   }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor1'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor2'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor3'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/1-D Lookup Table'  }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/Add'               }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/Out1'              }
    {'slexVariantSubsystems/Controller/Out1'                                   }
    {'slexVariantSubsystems/Scope'                                             }
    {'slexVariantSubsystems/sine1'                                             }
    {'slexVariantSubsystems/sine2'                                             }
    {'slexVariantSubsystems/sine3'                                             }
    {'slexVariantSubsystems/Out1'                                              }

モデルのコンパイル後の find_system の結果

モデルをコンパイルします。

set_param(model,"SimulationCommand","update");

Simulink.match.activeVariants フィルターを使用すると、シミュレーションでアクティブなブロックが返されます。

find_system(model,MatchFilter=@Simulink.match.activeVariants)
ans = 18×1 cell
    {'slexVariantSubsystems'                                                   }
    {'slexVariantSubsystems/Controller'                                        }
    {'slexVariantSubsystems/Controller/sensor1'                                }
    {'slexVariantSubsystems/Controller/sensor2'                                }
    {'slexVariantSubsystems/Controller/sensor3'                                }
    {'slexVariantSubsystems/Controller/Linear Controller'                      }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor1'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor2'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor3'              }
    {'slexVariantSubsystems/Controller/Linear Controller/Add'                  }
    {'slexVariantSubsystems/Controller/Linear Controller/Discrete↵Transfer Fcn'}
    {'slexVariantSubsystems/Controller/Linear Controller/Out1'                 }
    {'slexVariantSubsystems/Controller/Out1'                                   }
    {'slexVariantSubsystems/Scope'                                             }
    {'slexVariantSubsystems/sine1'                                             }
    {'slexVariantSubsystems/sine2'                                             }
    {'slexVariantSubsystems/sine3'                                             }
    {'slexVariantSubsystems/Out1'                                              }

Simulink.match.codeCompileVariants フィルターを使用すると、生成された C コードの一部であるブロックが返されます。

slexVariantSubsystems([],[],[],"compileForCodegen");
slexVariantSubsystems([],[],[],"term");
find_system("slexVariantSubsystems",MatchFilter=@Simulink.match.codeCompileVariants)
ans = 25×1 cell
    {'slexVariantSubsystems'                                                   }
    {'slexVariantSubsystems/Controller'                                        }
    {'slexVariantSubsystems/Controller/sensor1'                                }
    {'slexVariantSubsystems/Controller/sensor2'                                }
    {'slexVariantSubsystems/Controller/sensor3'                                }
    {'slexVariantSubsystems/Controller/Linear Controller'                      }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor1'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor2'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor3'              }
    {'slexVariantSubsystems/Controller/Linear Controller/Add'                  }
    {'slexVariantSubsystems/Controller/Linear Controller/Discrete↵Transfer Fcn'}
    {'slexVariantSubsystems/Controller/Linear Controller/Out1'                 }
    {'slexVariantSubsystems/Controller/Nonlinear Controller'                   }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor1'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor2'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor3'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/1-D Lookup Table'  }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/Add'               }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/Out1'              }
    {'slexVariantSubsystems/Controller/Out1'                                   }
    {'slexVariantSubsystems/Scope'                                             }
    {'slexVariantSubsystems/sine1'                                             }
    {'slexVariantSubsystems/sine2'                                             }
    {'slexVariantSubsystems/sine3'                                             }
    {'slexVariantSubsystems/Out1'                                              }

ブロックのアクティブ性に関係なくすべてのブロックを検索

ブロックがバリアントによってアクティブであるか非アクティブであるかに関係なく、すべてのブロックを検索するには、Simulink.match.allVariants() フィルターを使用します。

find_system(model,MatchFilter=@Simulink.match.allVariants)
ans = 25×1 cell
    {'slexVariantSubsystems'                                                   }
    {'slexVariantSubsystems/Controller'                                        }
    {'slexVariantSubsystems/Controller/sensor1'                                }
    {'slexVariantSubsystems/Controller/sensor2'                                }
    {'slexVariantSubsystems/Controller/sensor3'                                }
    {'slexVariantSubsystems/Controller/Linear Controller'                      }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor1'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor2'              }
    {'slexVariantSubsystems/Controller/Linear Controller/sensor3'              }
    {'slexVariantSubsystems/Controller/Linear Controller/Add'                  }
    {'slexVariantSubsystems/Controller/Linear Controller/Discrete↵Transfer Fcn'}
    {'slexVariantSubsystems/Controller/Linear Controller/Out1'                 }
    {'slexVariantSubsystems/Controller/Nonlinear Controller'                   }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor1'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor2'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/sensor3'           }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/1-D Lookup Table'  }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/Add'               }
    {'slexVariantSubsystems/Controller/Nonlinear Controller/Out1'              }
    {'slexVariantSubsystems/Controller/Out1'                                   }
    {'slexVariantSubsystems/Scope'                                             }
    {'slexVariantSubsystems/sine1'                                             }
    {'slexVariantSubsystems/sine2'                                             }
    {'slexVariantSubsystems/sine3'                                             }
    {'slexVariantSubsystems/Out1'                                              }

入力引数

すべて折りたたむ

検索するモデルおよびサブシステム。モデルはハンドルまたは名前として指定します。サブシステムは、対応する Subsystem ブロックのブロック パスとして指定します。ハンドルは数値スカラーまたは数値配列の形式に設定します。名前は string、string 配列、文字ベクトル、または文字ベクトルの cell 配列の形式に設定します。

ハンドルとパスの取得については、Get Handles and Pathsを参照してください。

例: "myModel/mySubsystem"

例: ["myModel1","myModel2"]

データ型: double | array of doubles | string | string array | character vector | cell array of character vectors

名前と値の引数

すべて展開する

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: SearchDepth="0",SearchUnderMasks="none",BlockType ="Goto" は、マスク サブシステムは除き、読み込まれたモデルで Goto ブロックを検索します。

find_system 関数を使用するときは、Name=Value の引数に以下を含めることができます。

  • 検索条件 (例: CaseSensitive="on")

  • パラメーター値 (例: BlockType="Gain")

検索条件は任意の順序で指定でき、パラメーター値も任意の順序で指定できますが、検索条件はパラメーター値よりも前に指定しなければなりません。

ブロック パラメーターの詳細については、プログラムによるブロックのパラメーターとプロパティの指定を参照してください。

検索条件

すべて展開する

特定の値のブロック ダイアログ ボックス パラメーターを検索するオプション。string または文字ベクトルとして指定します。この引数は他の検索条件の引数よりも後に指定しなければなりません。

データ型: string | character vector

テキストの大文字と小文字を区別するオプション。"on" または "off" として指定します。

データ型: string | character vector

ライン、端子、および注釈を検索に含めるオプション。"on" または 'off' として指定します。このオプションが "off" に設定されている場合、Model 引数をモデルの絶対パス名、モデルのパス名の cell 配列、ハンドル、ハンドルのベクトルのいずれとして指定したかに関係なく、find_system 関数はハンドルのベクトルを返します。

データ型: string | character vector

特定のタイプのモデル要素を検索するオプション。次のいずれかとして指定します。

  • "block"

  • "line"

  • "port"

  • "annotation"

  • "block_diagram"

ライン、端子、または注釈を検索するには、まず FindAll の値を "on" として指定しなければなりません。その後、必要に応じて Type の値を指定することで、検索対象とするモデル要素のタイプを絞り込むことができます。FindAll と Type の前後やそれらの間に他の検索条件オプションを指定できます。たとえば、myModel という名前のモデルで注釈を検索し、マスク内も調べるには、MATLAB® コマンド ウィンドウで次のコマンドを入力します。

find_system("myModel",FindAll="on",SearchUnderMasks="all",Type="annotation")

データ型: string | character vector

最初の結果のみを返して検索を停止するオプション。"on" または "off" として指定します。

データ型: string | character vector

モデルの参照サブシステム内を検索して子ブロックをリストするオプション。"on" または "off" として指定します。

データ型: string | character vector

モデルの参照モデル内を検索して子ブロックをリストするオプション。"on" または "off" として指定します。SearchInsideModelReferences を有効にすると、find_system 関数は最上位モデルとすべての参照モデルを読み込み、階層内のすべてのモデルで再帰的に検索を行います。

データ型: string | character vector

ライブラリ リンク内を検索するオプション。"on" または "off" として指定します。検索するモデルを指定しない場合、SearchInsideLibraryLinks が "on" または "off" のどちらに設定されているのかに関係なく、find_system 関数の結果には読み込まれたライブラリが含まれます。SearchInsideLibraryLinks を SearchUnderMasks と共に使用すると、サブシステムでライブラリ リンクを更新できます。サブシステムのライブラリ リンクを更新するを参照してください。

データ型: string | character vector

コメント化されたブロックを検索に含めるオプション。"on" または "off" として指定します。

データ型: string | character vector

部分的に読み込まれたすべてのモデルを読み込むオプション。モデルを読み込むには "on"、読み込みを無効にするには "off" として指定します。たとえば、読み込み関連の警告が表示されるのを防ぐために、このオプションを使用します。

データ型: string | character vector

マスク内を検索するオプション。次のいずれかとして指定します。

  • "none" — マスク サブシステムを検索しません。

  • "all" — すべてのマスク サブシステムを検索します。

  • "functional" — パラメーター、説明、ヘルプ文字列、および UI 要素がない、アイコン描画コマンドまたはマスク初期化コマンドをもつマスク サブシステムを検索に含めます。

  • "graphical" — ワークスペース、ダイアログ、ヘルプ文字列、および UI 要素がない、アイコン描画コマンドのみをもつマスク サブシステムを検索に含めます。

メモ

オプション "none" は以前のオプション "off" に置き換わるものです。オプション "all" は以前のオプション "on" に置き換わるものです。

データ型: string | character vector

検索式を正規表現として扱うオプション。"on" または "off" として指定します。RegExp が "on" に設定されている場合、検索では検索式が正規表現として取り扱われます。MATLAB 正規表現の詳細については、正規表現を参照してください。

データ型: string | character vector

指定したレベルまでに検索の深さを制限するオプション。正の整数、string、または文字ベクトルとして指定します。たとえば、読み込まれたモデルのみを検索する場合は 0、モデルの階層構造の最上位のブロックとサブシステムを検索する場合は 1、モデルの階層構造の最上位とその子を検索する場合は 2 のように指定します。既定では、すべてのレベルを検索します。

データ型: string | character vector

メモ

Variants 引数は削除される予定です。代わりに MatchFilter を使用してください。詳細については、バージョン履歴を参照してください。

バリアントを検索するオプション。次のいずれかとして指定します。

  • "ActiveVariants" — Variant Subsystem 内のアクティブなバリアントの選択肢のみを検索します。

  • "AllVariants" — Variant Subsystem 内のすべてのバリアントの選択肢を検索します。

  • "ActivePlusCodeVariants" — シミュレーション内でアクティブであり、生成されたコードの一部である Variant Subsystem 内のすべてのバリアントの選択肢を検索します。

この検索条件は、[バリアント制御モード] が expression または label に設定されている Variant Subsystem ブロックにのみ適用されます。MatchFilter オプションを指定して関数 find_system を使用すると、すべてのタイプのバリアント ブロックについて動作します。

データ型: string | character vector

検索でブロック、モデル、信号線、端子、注釈などのモデル要素を照合してフィルターを適用するオプション。関数ハンドルとして指定します。MatchFilter を使用して、検索で要素を含めるべきか、スキップすべきかどうかを決定します。

この引数の動作は次のとおりです。

  • カスタム フィルター関数を使用して要素へのフィルターの適用を許可する

  • フィルターに一致しない場合に要素の処理を回避する

  • ブロック、信号線、または注釈に複雑なフィルターを適用して内部で結果にフィルターを適用する

名前付き関数は MATLAB プログラム ファイル内で定義されていなければなりません。関数はモデル要素のハンドルを入力として取り、2 つの出力を返します。

 function [match, prune] = func(element)
 
  • 入力 element は、ブロック ハンドルなど、処理対象のモデル要素のハンドルです。

  • 1 つ目の出力 match は logical 値です。false の場合、検索で要素がスキップされます。

  • 2 つ目の出力 prune は、モデル要素がサブシステムである場合にのみ適用される、オプションの logical 値です。既定値は false です。この値が true に設定されている場合、サブシステム全体が検索対象から除外されます。

カスタム マッチ フィルター関数の作成方法を示す例については、カスタムの MatchFilter 関数を使用した find_system の検索でのフィルターの適用を参照してください。

バリアント: Simulink® には、バリアント ブロックを検索するための、次の組み込みマッチ フィルター関数が用意されています。

コンパイル後のフィルター関数:

  • Simulink.match.activeVariants — モデルのコンパイル後にシミュレーションでアクティブなブロックを検索します。

  • Simulink.match.codeCompileVariants — モデルのコンパイル後に生成コードの一部であるブロックを検索します。

  • Simulink.match.allVariants — バリアントが原因でブロックがアクティブか非アクティブかに関係なくすべてのブロックを検索します。

  • Simulink.match.variantAssemblySubsystems — すべての Variant Assembly Subsystem ブロックを検索します。

これらのフィルターの使用方法を示す例については、find_system での組み込みの MatchFilter 関数を使用したバリアント ブロックの検索を参照してください。

メモ

アクティベーションのタイミングが [ブロック線図の更新] である Variant Subsystem ブロックについて、@Simulink.match.allVariants マッチ フィルターを使用してすべての選択肢内のブロックを特定する場合、関数は非アクティブなバリアント選択肢をリストしますが、LoadFcn コールバックを実行する対象はアクティブなバリアント選択肢のみになります。非アクティブなバリアント選択肢はモデルの実行に影響しないため、関数はそれらに対して LoadFcn コールバックを実行しません。

正しい結果を得るには、Simulink.match.activeVariants フィルターと Simulink.match.codeCompileVariants フィルターを使用する前に、"モデルをコンパイルする" 必要があります。モデルがコンパイルされない場合、これらのフィルターによってモデル内のすべてのブロックが返されます。これらのフィルターのコンパイル前とコンパイル後の結果を比較した例については、バリアント ブロック用のマッチ フィルターのコンパイル前とコンパイル後の動作の比較を参照してください。

Variant Subsystem ブロックの編集時フィルターの関数:

  • Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices — バリアント サブシステムの選択肢内のシミュレーションでアクティブなブロックと生成コードの一部であるブロックを検索に含めます。この関数では、Variants 引数の ActivePlusCodeVariants オプションと同じような結果が生成されます。

  • Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices — バリアント サブシステムのアクティブな選択肢内のブロックを検索に含めます。この関数では、Variants 引数の ActiveVariants オプションと同じような結果が生成されます。

編集時フィルター制限:

  • フィルターは CompiledVariantInfo ブロック パラメーターのコンパイル後のブロックのアクティブ性情報を使用しません。

  • フィルターは、以下のブロック パラメーターの設定をもつ Variant Subsystem ブロックにのみ適用されます。

    • [バリアント制御モード] が [式] または [ラベル] に設定されている

    • [Variant Subsystem の外部に条件を伝播する] が off に設定されている

  • フィルターは、find_system 関数、find_mdlrefs 関数、および Simulink.FindOptions オブジェクトのコンテキスト内で使用されている場合にのみ、ブロック ハンドルが Variant Subsystem のアクティブな選択肢内にあるかどうかを特定できます。

すべてのタイプのバリアント ブロックに対して処理するには、モデルのコンパイル後に Simulink.match.codeCompileVariants フィルターまたは Simulink.match.activeVariants フィルターを使用します。

分岐した信号線の特定の部分を検索するオプション。次のいずれかとして指定します。

  • "trunk" – 出力端子に接続されているかソースに接続されていない分岐

  • "branch" – トランクに接続されている分岐

分岐した信号線の特定の部分を検索するには、まず FindAll の値を "on" として指定し、Type の値を "line" として指定してから、SegmentType の値を指定する必要があります。FindAll、Type、および SegmentType オプションの前後やそれらの間に他の検索条件オプションを指定できます。たとえば、myModel という名前のモデルでトランクの信号ライン セグメントを検索し、マスク内も調べるには、MATLAB コマンド ウィンドウで次のコマンドを入力します。

trunkSegments = find_system("myModel",FindAll="on",..
SearchUnderMasks="all",type="line",SegmentType="trunk");

データ型: string | character vector

出力引数

すべて折りたたむ

見つかった一致するオブジェクト。ハンドル、名前、またはパスとして返されます。ハンドルは、数値スカラーまたは数値配列の形式に設定されます。名前とパスは、文字ベクトルまたは文字ベクトルの cell 配列の形式に設定されます。

以下の条件の両方が満たされている場合、見つかったオブジェクトは名前またはパスとして返されます。

  • 検索条件オプション FindAll が既定値 "off" に設定されている。

  • 名前を使用して Model を指定したか、モデルを指定しなかった。

以下の条件の 1 つ以上が満たされている場合、見つかったオブジェクトはハンドルとして返されます。

  • FindAll の値を "on" に設定した。

  • ハンドルを使用して Model を指定した。

データ型: double | array of doubles | character vector | cell array of character vectors

バージョン履歴

R2006a より前に導入

すべて展開する