주요 콘텐츠

find_system

R2026b

모델, 블록, 선, 포트 및 주석 찾기

설명

Objects = find_system은 불러온 모델과 그 모델의 블록을 서브시스템까지 포함하여 반환합니다.

Objects = find_system(Model)은 지정된 모델과 그 모델의 블록을 반환합니다.

예제

Objects = find_system(Name=Value)는 불러온 모델과, 그 모델의 객체 중 하나 이상의 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®는 모델에서 Variant 블록을 찾는 데 사용할 수 있는 내장 함수를 제공합니다. 자세한 내용은 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 함수를 사용하여 블록의 상태가 Variant에 따라 활성이든 비활성이든 상관없이 모든 블록을 찾습니다.

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);

이 예제에서는 Variant 블록을 찾는 내장 find_system MatchFilter 함수의 컴파일 전/후 결과를 비교합니다. 다음 필터를 사용하면 시뮬레이션에서 활성 상태이거나 생성 코드의 일부인 Variant 블록을 찾을 수 있습니다.

  • 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를 사용하여 생성된 코드에는 활성 Variant 선택지와 비활성 Variant 선택지가 모두 포함됩니다.

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 결과

모델을 컴파일하기 전에 내장 일치 필터를 사용하면 Variant 활성화 상태에 상관없이 모델의 모든 블록을 반환합니다.

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() 필터를 사용하여 블록의 상태가 Variant에 따라 활성이든 비활성이든 상관없이 모든 블록을 찾습니다.

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형 배열, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정합니다.

핸들과 경로를 가져오는 방법에 대한 자세한 내용은 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")

검색 조건과 파라미터 값은 어떠한 순서로도 지정할 수 있지만, 검색 조건이 파라미터 값 앞에 와야 합니다.

블록 파라미터에 대한 자세한 내용은 Programmatically Specify Block Parameters and Properties 항목을 참조하십시오.

검색 조건

모두 확장

블록 대화 상자 파라미터에서 값을 검색하는 옵션으로, string형 또는 문자형 벡터로 지정됩니다. 이 인수는 다른 검색 조건 인수 뒤에 와야 합니다.

데이터형: string | character vector

텍스트의 대/소문자를 고려하는 옵션으로, "on" 또는 "off"로 지정됩니다.

데이터형: string | character vector

선, 포트, 주석을 검색에 포함시키는 옵션으로, "on" 또는 'off'로 지정됩니다. 이 옵션을 "off"로 설정할 경우 find_system 함수는 Model 인수를 전체 모델 경로 이름, 모델 경로 이름으로 구성된 셀형 배열, 핸들 또는 핸들로 구성된 벡터로 지정하는지 여부에 관계없이 핸들로 구성된 벡터를 반환합니다.

데이터형: 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"로 지정됩니다. 검색할 모델을 지정하지 않은 경우 find_system 함수는 SearchInsideLibraryLinks를 "on"으로 설정했든 "off"로 설정했든지에 상관없이 불러온 라이브러리를 검색 결과에 포함합니다. 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를 대신 사용하십시오. 자세한 내용은 버전 내역 항목을 참조하십시오.

Variant를 검색하는 옵션으로, 다음 중 하나로 지정됩니다.

  • "ActiveVariants" — Variant Subsystem에서 활성 Variant 선택지만 검색합니다.

  • "AllVariants" — Variant Subsystem에서 모든 Variant 선택지를 검색합니다.

  • "ActivePlusCodeVariants" — 시뮬레이션에서 활성 상태이면서 생성 코드의 일부가 되는 모든 Variant 선택지를 Variant Subsystem에서 검색합니다.

이 검색 제약 조건은 Variant 제어 모드가 expression 또는 label로 설정된 Variant Subsystem 블록에만 적용됩니다. 모든 유형의 Variant 블록에 대해 동작하도록 하려면 find_system 함수를 MatchFilter 옵션과 함께 사용하십시오.

데이터형: string | character vector

검색에서 블록, 모델, 신호 선, 포트, 주석 등의 모델 요소를 일치시키고 필터링하는 옵션으로, 함수 핸들로 지정됩니다. 요소를 검색에 포함할지 검색에서 건너뛸지를 결정하려면 MatchFilter를 사용하십시오.

이 인수를 통해 다음이 가능합니다.

  • 사용자 지정 필터 함수로 요소를 필터링할 수 있습니다.

  • 필터가 일치하지 않을 때 요소가 처리되는 것을 방지할 수 있습니다.

  • 내부적으로 결과를 필터링하도록 블록, 신호 선 또는 주석에 복합 필터를 적용합니다.

명명된 함수는 MATLAB 프로그램 파일 내에서 정의해야 합니다. 이 함수는 모델 요소의 핸들을 입력으로 받아 두 개의 출력을 반환합니다.

 function [match, prune] = func(element)
 
  • 입력 element는 처리 중인 모델 요소의 핸들(예: 블록 핸들)입니다.

  • 첫 번째 출력 match는 논리값입니다. false인 경우 요소를 검색에서 건너뜁니다.

  • 두 번째 출력 prune은 선택적 논리값으로, 모델 요소가 서브시스템인 경우에만 적용됩니다. 디폴트 값은 false입니다. 이 값이 true로 설정된 경우 검색에서 전체 서브시스템이 제외됩니다.

사용자 지정 일치 필터 함수를 만드는 방법을 보여주는 예제는 사용자 지정 MatchFilter 함수를 사용하여 find_system 검색 필터링하기 항목을 참조하십시오.

Variant: Simulink®는 Variant 블록을 찾기 위해 다음과 같이 내장된 일치 필터 함수를 제공합니다.

컴파일 후 실행되는 필터 함수:

  • Simulink.match.activeVariants — 모델 컴파일 후 시뮬레이션에서 활성 상태인 블록을 찾습니다.

  • Simulink.match.codeCompileVariants — 모델 컴파일 후 생성 코드의 일부가 되는 블록을 찾습니다.

  • Simulink.match.allVariants — 블록의 상태가 Variant에 따라 활성이든 비활성이든 상관없이 모든 블록을 찾습니다.

  • Simulink.match.variantAssemblySubsystems — 모든 Variant Assembly Subsystem 블록을 찾습니다.

이러한 필터의 사용을 보여주는 예제는 find_system을 내장 MatchFilter 함수와 함께 사용하여 Variant 블록 찾기 항목을 참조하십시오.

참고

다이어그램 업데이트 활성화 시점으로 설정된 상태에서 Variant Subsystem 블록의 모든 선택지 내에서 블록을 식별하는 데에 @Simulink.match.allVariants 일치 필터를 사용하는 경우, 함수는 비활성 Variant 선택지를 나열하지만 활성 Variant 선택지에 대해서만 LoadFcn 콜백을 실행합니다. 또한 비활성 Variant 선택지는 모델 실행에 영향을 미치지 않으므로 비활성 Variant 선택지에 대해 LoadFcn 콜백을 실행하지 않습니다.

정확한 결과를 얻으려면 Simulink.match.activeVariants 필터와 Simulink.match.codeCompileVariants 필터를 사용하기 전에 먼저 모델을 컴파일해야 합니다. 모델이 컴파일되지 않았으면 필터는 모델의 모든 블록을 반환합니다. 이러한 필터의 컴파일 전/후 결과를 비교하는 예제는 Variant 블록에 대한 일치 필터의 컴파일 전/후 동작 비교하기 항목을 참조하십시오.

Variant Subsystem 블록에 대한 편집 시 필터 함수:

  • Simulink.match.legacy.filterOutCodeInactiveVariantSubsystemChoices — Variant Subsystem 선택지 내에 있는 블록 중 시뮬레이션에서 활성 상태이면서 생성 코드의 일부가 되는 블록을 검색에 포함합니다. 이 함수는 Variants 인수의 ActivePlusCodeVariants 옵션과 유사한 결과를 낳습니다.

  • Simulink.match.legacy.filterOutInactiveVariantSubsystemChoices — Variant Subsystem의 활성 선택지 내에 있는 블록을 검색에 포함합니다. 이 함수는 Variants 인수의 ActiveVariants 옵션과 유사한 결과를 낳습니다.

편집 시 필터의 제한 사항:

  • 필터는 CompiledVariantInfo 블록 파라미터의 컴파일 후 블록 활성 상태 정보를 사용하지 않습니다.

  • 필터는 다음 블록 파라미터 설정을 가진 Variant Subsystem 블록에만 적용됩니다.

    • Variant 제어 모드가 표현식 또는 레이블로 설정됨

    • Variant Subsystem 외부에 조건 전파가 off로 설정됨

  • 이 필터는 find_system 함수, find_mdlrefs 함수, Simulink.FindOptions 객체의 컨텍스트 내에서 사용할 때만 블록 핸들이 Variant Subsystem의 활성 선택지 내에 있는지 식별할 수 있습니다.

모든 유형의 Variant 블록에 대해 동작하도록 하려면 모델 컴파일 후 Simulink.match.codeCompileVariants 또는 Simulink.match.activeVariants 필터를 사용하십시오.

분기된 신호 선의 특정 부분을 검색하는 옵션으로, 다음 중 하나로 지정됩니다.

  • "trunk"– 출력 포트에 연결되었거나 소스에 연결되지 않은 분기

  • "branch"– 트렁크(trunk)에 연결된 분기

분기된 신호 선의 특정 부분을 찾으려면 먼저 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

출력 인수

모두 축소

검색된 일치하는 객체로, 핸들, 이름 또는 경로로 반환됩니다. 핸들의 형식은 숫자형 스칼라 또는 숫자형 배열로 지정됩니다. 이름 및 경로의 형식은 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

검색된 객체는 다음 조건이 모두 충족되면 이름 또는 경로로 반환됩니다.

  • 검색 조건 옵션 FindAll이 디폴트 값인 "off"로 설정되어 있습니다.

  • 이름을 사용하여 Model을 지정했거나, 모델을 지정하지 않았습니다.

검색된 객체는 다음 조건 중 하나 이상이 충족되면 핸들로 반환됩니다.

  • FindAll 값을 "on"으로 설정했습니다.

  • 핸들을 사용하여 Model을 지정했습니다.

데이터형: double | array of doubles | character vector | cell array of character vectors

버전 내역

R2006a 이전에 개발됨

모두 확장