メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

find_system

R2026a

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

説明

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

例

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

例

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

例

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

例

例

すべて折りたたむ

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

すべての読み込まれたモデルおよびライブラリとそのブロックを検索します。

find_system
ans = 13×1 cell
    {'vdp'                }
    {'vdp/Callback Button'}
    {'vdp/Constant'       }
    {'vdp/Mu'             }
    {'vdp/Product'        }
    {'vdp/Scope'          }
    {'vdp/Square'         }
    {'vdp/Sum'            }
    {'vdp/Sum1'           }
    {'vdp/x1'             }
    {'vdp/x2'             }
    {'vdp/Out1'           }
    {'vdp/Out2'           }

例を開きます。次に、vdp モデルおよび ex_sldemo_clutch モデルを読み込みます。

load_system({'vdp','ex_sldemo_clutch'})

vdp モデルとそのブロックを検索します。

find_system('vdp')
ans = 13×1 cell
    {'vdp'                }
    {'vdp/Callback Button'}
    {'vdp/Constant'       }
    {'vdp/Mu'             }
    {'vdp/Product'        }
    {'vdp/Scope'          }
    {'vdp/Square'         }
    {'vdp/Sum'            }
    {'vdp/Sum1'           }
    {'vdp/x1'             }
    {'vdp/x2'             }
    {'vdp/Out1'           }
    {'vdp/Out2'           }

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

すべての読み込まれたモデル、サブシステム、およびライブラリを検索します。サブシステム名は、サブシステムを個別に読み込むことができる場合にのみ返されます。

find_system('type','block_diagram')
ans = 1×1 cell array
    {'vdp'}

例を開きます。次に、ex_sldemo_clutch モデルを読み込みます。

load_system('ex_sldemo_clutch')

ex_sldemo_clutch モデル内の Unlocked サブシステムの子であるすべての Goto ブロックの名前を返します。

find_system('ex_sldemo_clutch/Unlocked','SearchDepth',1,'BlockType','Goto')
ans = 2×1 cell
    {'ex_sldemo_clutch/Unlocked/Goto' }
    {'ex_sldemo_clutch/Unlocked/Goto1'}

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

vdp モデル内で以下の 2 つの条件を満たしているブロックを検索します。

  • Integrator ブロックである。

  • [初期条件] の値が 0 である。

find_system('vdp','BlockType','Integrator','InitialCondition','0')
ans = 1×1 cell array
    {'vdp/x2'}

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

find_system 関数を使用して vdp モデルでラインを検索します。検索にラインを含めるには、'FindAll' を 'on' として指定します。

l = find_system('vdp','FindAll','on','type','line')
l = 20×1

  340.0010
  339.0009
  338.0007
  337.0007
  336.0006
  335.0007
  334.0007
  333.0007
  332.0011
  331.0007
  330.0009
  329.0007
  328.0007
  327.0007
  326.0007
      ⋮

find_system 関数を使用して vdp モデル内の注釈を検索します。検索に注釈を含めるには、'FindAll' を 'on' として指定します。

an = find_system('vdp','FindAll','on','type','annotation')
an = 3×1

  343.0006
  342.0007
  341.0010

例を開きます。次に、vdp モデルおよび f14 モデルを読み込みます。

models={'vdp','f14'};
load_system(models)

vdp モデルおよび f14 モデルで値が 3 である Block Dialog ボックス パラメーターをもつブロックを検索します。

find_system(models,'BlockDialogParams','3')
ans = 3×1 cell
    {'vdp/Square'                                              }
    {'f14/Aircraft↵Dynamics↵Model/Rotary Gust↵qGust (rad//sec)'}
    {'f14/Controller/q (rad//sec)'                             }

例を開きます。次に、ex_sldemo_clutch モデルおよび vdp モデルを読み込みます。

load_system({'ex_sldemo_clutch','vdp'})

3 で始まる [ブロック パラメーター] ダイアログ ボックス パラメーター値をもつ、現在読み込まれているモデルの最上位にあるすべてのブロックを検索します。

find_system('SearchDepth','1','regexp','on','BlockDialogParams','^3')
ans = 4×1 cell
    {'vdp/Scope'         }
    {'vdp/Scope'         }
    {'vdp/Square'        }
    {'ex_sldemo_clutch/w'}

正規表現を使用して検索する場合は、一致させる文字ベクトルの一部を指定して、その文字ベクトルが含まれるすべてのオブジェクトを返すことができます。

ex_sldemo_clutch モデル内のすべての Integrator ブロックを検索します。

load_system('ex_sldemo_clutch');
ports=find_system('ex_sldemo_clutch','regexp','on','blocktype','Integrator')
ports = 3×1 cell
    {'ex_sldemo_clutch/Locked/Engine//Vehicle↵Integrator'}
    {'ex_sldemo_clutch/Unlocked/Engine↵Integrator'       }
    {'ex_sldemo_clutch/Unlocked/Vehicle↵Integrator'      }

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

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

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

    'myModel'
    'myModel/Subsystem'

find_system を、'on' に設定した 'SearchInsideLibraryLinks' と共に使用します。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'

関数の処理対象のモデルまたはブロックを指定する必要がある複数の関数呼び出しを行う場合、モデルまたはブロックを指定するためにファイル パスではなくハンドルを使用します。

関数 find_system の複数の呼び出しでハンドルとして vdp model を指定します。

例を開きます。次に、vdp モデルを読み込みます。

load_system('vdp')

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

h = get_param('vdp','Handle')
h = 
149.0521

vdp モデルで値が 0 である [ブロック パラメーター] ダイアログ ボックス パラメーターを検索します。vdp モデルのハンドルとして検索するモデルを指定します。

find_system(h,'BlockDialogParams','0')
ans = 8×1

  161.0327
  161.0327
  297.0205
  314.0168
  317.0131
  317.0131
  319.0121
  319.0121

vdp モデルで値が 3 で始まる [ブロック パラメーター] ダイアログ ボックス パラメーター値をもつブロック パラメーターを検索します。vdp モデルのハンドルとして検索するモデルを指定します。

find_system(h,'regexp','on','BlockDialogParams','^3')
ans = 3×1

  297.0205
  297.0205
  300.0338

vdp モデルでブロック名に文字ベクトル 'port' が含まれているブロックを検索します。vdp モデルのハンドルとして検索するモデルを指定します。

find_system(h,'regexp','on','blocktype','port')
ans = 2×1

  317.0131
  319.0121

カスタム フィルター関数で定義されているように、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'                                              }

入力引数

すべて折りたたむ

検索するモデル。モデルの絶対パス名、モデルのパス名の cell 配列、ハンドル、ハンドルのベクトルとして指定します。

例: 'MyModel/Subsystem1'

例: {'vdp','ex_sldemo_clutch'}

名前と値の引数

すべて展開する

オプションの引数を Name1 = Value1,...,NameN = ValueN として指定します。ここで、Name は引数の名前、Value は引数に割り当てる値です。名前と値の引数は他の引数の後に指定しなければなりません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

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

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

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

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

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

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

検索条件

すべて展開する

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

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

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

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

  • 'block'

  • 'line'

  • 'port'

  • 'annotation'

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

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

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

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

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

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

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

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

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

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

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

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

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

メモ

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

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

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

メモ

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

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

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

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

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

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

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

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

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

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

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

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

 function [match, prune] = func(element)
 
  • 入力 element は、ブロック ハンドルなど、処理対象のコンポーネントのハンドルです。

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

  • 2 つ目の出力 prune は、element がサブシステムである場合にのみ適用される、オプションの 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');

出力引数

すべて折りたたむ

見つかった一致するオブジェクト。パス名の cell 配列またはハンドルのベクトルとして返されます。

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

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

  • Model をパス名またはパス名の cell 配列として指定するか、モデルを指定しなかった。

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

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

  • Model をハンドルまたはハンドルのベクトルとして指定した。

バージョン履歴

R2006a より前に導入

すべて展開する