メインコンテンツ

find_system

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

説明

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

  363.0094
  362.0090
  361.0088
  360.0087
  359.0073
  358.0084
  357.0110
  356.0096
  355.0095
  354.0084
  353.0089
  352.0072
  351.0084
  350.0099
  349.0087
      ⋮

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

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

  366.0088
  365.0090
  364.0096

例を開きます。次に、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' に設定した 'FollowLinks' と共に使用します。このコマンドは、サブシステムへのライブラリ リンクに従わず、最上位のサブシステムのみを返します。

open_system('myModel')
find_system(bdroot,'LookUnderMasks','all','FollowLinks', 'off')
ans = 

    'myModel'
    'myModel/Subsystem'

find_system を、'on' に設定した 'FollowLinks' と共に使用します。find_system はライブラリ リンクを更新し、サブシステムのブロックを返します。

find_system(bdroot,'LookUnderMasks','all','FollowLinks','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 = 
153.0038

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

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

  288.0096
  288.0096
  295.0095
  337.0095
  340.0074
  340.0074
  342.0079
  342.0079

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

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

  295.0095
  295.0095
  298.0115

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

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

  340.0074
  342.0079

カスタム フィルター関数でMatchFilter引数を使用して、vdp モデルで Inport ブロックおよび Outport ブロック以外のブロックを検索します。

この例のカスタム関数は、ファイル 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

関数ハンドルを MatchFilter 引数の値として指定します。

load_system('vdp');
blks = find_system('vdp','MatchFilter',@nonInOutBlocks);

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 関数を使用して、シミュレーション内でアクティブであるか、編集時に生成されたコードの一部である Variant Subsystem 選択ブロックを検索します。編集時フィルターの制限の詳細については、MatchFilterを参照してください。

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

関数 Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices を使用して、編集時にアクティブな Variant Subsystem 選択ブロックを検索します。編集時フィルターの制限の詳細については、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',LookUnderMasks = '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 の値を指定する必要があります。FindAllType の前後やそれらの間に他の検索条件オプションを指定できます。たとえば、myModel という名前のモデルで注釈を検索し、マスク内も調べるには、MATLAB® コマンド ウィンドウで次のコマンドを入力します。

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

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

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

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

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

コメント化されたブロックを検索に含めるオプション。'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 — シミュレーション内でアクティブであるか、生成されたコードの一部である Variant Subsystem 選択ブロックを検索するためのフィルター関数。この関数では、Variants 引数の 'ActivePlusCodeVariants' オプションと同じような結果が生成されます。

  • Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices — アクティブな Variant Subsystem 選択ブロックを検索するためのフィルター関数。この関数では、Variants 引数の 'ActiveVariants' オプションと同じような結果が生成されます。

編集時フィルター制限:

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

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

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

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

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

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

特定のタイプの信号ライン セグメントを検索するオプション。次のいずれかとして指定します。

  • 'trunk' – 出力端子に接続されているかソースに接続されていないライン セグメント

  • 'branch' – トランクに接続されているライン セグメント

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

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

出力引数

すべて折りたたむ

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

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

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

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

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

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

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

バージョン履歴

R2006a より前に導入

すべて展開する