find_system
시스템, 블록, 선, 포트 및 주석 찾기
구문
설명
는 불러온 시스템과, 그 시스템의 객체 중 하나 이상의 Objects
= find_system(Name,Value
)Name,Value
쌍 인수로 지정된 기준을 충족하는 객체를 반환합니다. 이 구문을 사용하여 검색 제약 조건을 지정하고 특정 파라미터 값을 검색할 수 있습니다. 파라미터와 값 쌍 앞에 검색 제약 조건을 지정하십시오.
는 지정된 시스템에서 지정된 조건을 충족하는 객체를 반환합니다.Objects
= find_system(System
,Name,Value
)
예제
불러온 시스템과 그 시스템의 블록 찾기
불러온 모든 시스템의 이름과 그 시스템의 블록의 이름을 반환합니다.
load_system('vdp')
find_system
ans = 15x1 cell
{'vdp' }
{'vdp/Constant' }
{'vdp/More Info' }
{'vdp/More Info/Model Info'}
{'vdp/Mu' }
{'vdp/Mux' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
vdp
를 포함하여 불러온 시스템과 라이브러리가 반환됩니다.
특정 시스템과 그 시스템의 블록 찾기
vdp
시스템과 그 시스템의 블록을 반환합니다.
load_system({'vdp','ex_sldemo_clutch'}) find_system('vdp')
ans = 15x1 cell
{'vdp' }
{'vdp/Constant' }
{'vdp/More Info' }
{'vdp/More Info/Model Info'}
{'vdp/Mu' }
{'vdp/Mux' }
{'vdp/Product' }
{'vdp/Scope' }
{'vdp/Square' }
{'vdp/Sum' }
{'vdp/Sum1' }
{'vdp/x1' }
{'vdp/x2' }
{'vdp/Out1' }
{'vdp/Out2' }
불러온 모델, 서브시스템, 라이브러리의 이름 반환하기
불러온 모델, 서브시스템, 라이브러리의 이름을 반환합니다. 서브시스템 이름은 해당 서브시스템을 독립적으로 불러올 수 있는 경우에만 반환됩니다.
load_system('vdp'); find_system('type','block_diagram')
ans = 1x1 cell array
{'vdp'}
서브시스템의 자식 검색하기
ex_sldemo_clutch
시스템에서 잠기지 않은 서브시스템의 자식에 해당하는 모든 Goto 블록의 이름을 반환합니다.
load_system('ex_sldemo_clutch'); find_system('ex_sldemo_clutch/Unlocked','SearchDepth',1,'BlockType','Goto')
ans = 2x1 cell
{'ex_sldemo_clutch/Unlocked/Goto' }
{'ex_sldemo_clutch/Unlocked/Goto1'}
Copyright 2020 The MathWorks, Inc.
여러 기준을 사용하여 검색하기
vdp
시스템을 검색하여 이득 값이 1
로 설정된 모든 Gain 블록의 이름을 반환합니다.
load_system('vdp'); find_system('vdp','BlockType','Gain','Gain','1')
ans = 1x1 cell array
{'vdp/Mu'}
선과 주석을 핸들로 반환하기
vdp
시스템에서 모든 선과 주석의 핸들을 가져옵니다. 'FindAll'
과 함께 사용하면 이 함수는 시스템 검색이 어떻게 지정되었는지에 상관없이 핸들을 반환합니다.
load_system('vdp'); L = find_system('vdp','FindAll','on','type','line')
L = 19×1
34.0004
33.0004
32.0004
31.0004
30.0004
29.0004
28.0004
27.0004
26.0004
25.0004
⋮
A = find_system('vdp','FindAll','on','type','annotation')
A = 2×1
36.0004
35.0004
특정 블록 파라미터 값 검색하기
vdp
및 ex_sldemo_clutch
시스템에서 값이 0
인 블록 대화 상자 파라미터를 찾습니다.
load_system({'vdp','f14'}) find_system({'vdp','f14'},'BlockDialogParams','0')
ans = 32×1 cell array {'vdp/More Info' } {'vdp/More Info/Model Info' } {'vdp/Scope' } {'vdp/x2' } {'vdp/Out1' } {'vdp/Out1' } {'vdp/Out2' } {'vdp/Out2' } {'f14/Aircraft↵Dynamics↵Model' } {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'} {'f14/Aircraft↵Dynamics↵Model/Vertical Velocity↵w (ft//sec)'} {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)' } {'f14/Aircraft↵Dynamics↵Model/Pitch Rate↵q (rad//sec)' } . . .
정규 표현식을 사용하여 검색하기
현재 불러온 시스템의 최상위에서 3
으로 시작하는 블록 대화 상자 파라미터 값을 가진 블록을 모두 찾습니다.
load_system({'ex_sldemo_clutch','vdp'}); find_system('SearchDepth','1','regexp','on','BlockDialogParams','^3')
ans = 4x1 cell
{'vdp/Scope' }
{'vdp/Scope' }
{'vdp/Square' }
{'ex_sldemo_clutch/w'}
정규 표현식을 사용하여 부분 일치 검색하기
정규 표현식을 사용하여 검색할 경우 일치시킬 문자형 벡터의 일부를 지정하여 그 문자형 벡터가 포함된 모든 객체를 반환할 수 있습니다. ex_sldemo_clutch
모델에서 Inport 블록과 Outport 블록을 모두 찾습니다.
load_system('ex_sldemo_clutch'); find_system('ex_sldemo_clutch','regexp','on','blocktype','port')
ans = 39x1 cell
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction...' }
{'ex_sldemo_clutch/Friction Mode Logic/Tin' }
{'ex_sldemo_clutch/Friction Mode Logic/Tfmaxs' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Break Apart...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup...' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/lock' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/unlock' }
{'ex_sldemo_clutch/Friction Mode Logic/Lockup FSM/locked' }
{'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tin'}
{'ex_sldemo_clutch/Friction Mode Logic/Requisite Friction/Tf' }
{'ex_sldemo_clutch/Friction Mode Logic/locked' }
{'ex_sldemo_clutch/Friction Mode Logic/lock' }
{'ex_sldemo_clutch/Friction Mode Logic/unlock' }
{'ex_sldemo_clutch/Friction Mode Logic/Tf' }
{'ex_sldemo_clutch/Locked/Tin' }
{'ex_sldemo_clutch/Locked/w' }
{'ex_sldemo_clutch/Unlocked/Tfmaxk' }
{'ex_sldemo_clutch/Unlocked/Tin' }
{'ex_sldemo_clutch/Unlocked/we' }
⋮
서브시스템에서 라이브러리 링크 업데이트하기
이 예제에서 myModel
에는 라이브러리 링크에 해당하는 단일 서브시스템이 포함되어 있습니다. 마지막으로 모델이 열린 이후 Gain 블록이 라이브러리의 해당 서브시스템에 추가되었습니다.
모델을 엽니다. 'FollowLinks'
를 'off'
로 설정한 상태로 find_system
을 사용합니다. 이 명령은 라이브러리 링크를 따라 해당 서브시스템까지 들어가지 않고, 최상위 수준에 있는 서브시스템만 반환합니다.
open_system('myModel') find_system(bdroot,'LookUnderMasks','on','FollowLinks', 'off')
ans = 'myModel' 'myModel/Subsystem'
'FollowLinks'
를 'on'
으로 설정한 상태로 find_system
을 사용합니다. find_system
이 라이브러리 링크를 업데이트하고 해당 서브시스템의 블록을 반환합니다.
find_system(bdroot,'LookUnderMasks','on','FollowLinks','on')
Updating Link: myModel/Subsystem/Gain Updating Link: myModel/Subsystem/Gain ans = 'myModel' 'myModel/Subsystem' 'myModel/Subsystem/Gain'
값을 핸들로 반환하기
시스템을 find_system
에 핸들로 제공합니다. 값이 0
인 블록 대화 상자 파라미터를 검색합니다. 동일한 블록에 get_param
을 여러 번 호출하는 경우 블록 핸들을 사용하는 것이 문자형 벡터로 전체 블록 경로를 지정하는 것보다 더 효율적입니다.
load_system('vdp'); sys = get_param('vdp','Handle'); find_system(sys,'BlockDialogParams','0')
ans = 8×1
3.0006
4.0006
8.0006
13.0006
14.0006
14.0006
15.0006
15.0006
입력 인수
System
— 검색할 시스템
경로 이름 | 경로 이름으로 구성된 셀형 배열 | 핸들 | 핸들로 구성된 벡터
검색할 시스템으로, 전체 시스템 경로 이름, 시스템 경로 이름으로 구성된 셀형 배열, 핸들 또는 핸들로 구성된 벡터로 지정됩니다.
예: '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
쌍 인수에 검색 제약 조건과 파라미터 이름, 값 쌍을 포함할 수 있습니다. 검색 제약 조건은 어떠한 순서로도 지정할 수 있지만, 파라미터 이름과 값 쌍 앞에 와야 합니다.
블록 파라미터 목록은 Block-Specific Parameters 항목을 참조하십시오.
BlockDialogParams
— 블록 대화 상자 파라미터에서 지정된 값을 검색하는 옵션
문자형 벡터 | string형 스칼라
블록 대화 상자 파라미터에서 지정된 값을 검색하는 옵션으로, 'BlockDialogParams'
와 함께 문자형 벡터 또는 string형 스칼라가 쉼표로 구분되어 지정됩니다. 이 쌍은 다른 검색 제약 조건 쌍 뒤에 와야 합니다.
CaseSensitive
— 일치할 경우 대/소문자를 고려하는 옵션
'on'
(디폴트 값) | 'off'
일치할 경우 대/소문자를 고려하는 옵션으로, 'CaseSensitive'
와 함께 'on'
(대/소문자를 구분하여 검색) 또는 'off'
가 쉼표로 구분되어 지정됩니다.
FindAll
— 시스템 내의 선, 포트, 주석을 포함시키는 옵션
'off'
(디폴트 값) | 'on'
시스템 내의 선, 포트, 주석을 검색에 포함하는 옵션으로, 'FindAll'
과 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다. 이 옵션이 'on'
으로 설정되면 find_system
은 System
인수가 어떻게 지정되었는가에 상관없이 핸들로 구성된 벡터를 반환합니다.
FirstResultOnly
— 첫 번째 결과만 반환하는 옵션
'off'
(디폴트 값) | 'on'
첫 번째 결과만 반환하고 검색을 중지하는 옵션으로, 'FirstResultOnly'
와 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다.
LookInsideSubsystemReference
— 참조된 서브시스템 내부를 탐색하는 옵션
'on'
(디폴트 값) | 'off'
모델 내의 참조된 서브시스템의 내부를 탐색하여 자식 블록을 나열하는 옵션으로, 'LookInsideSubsystemReference'
와 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다.
FollowLinks
— 링크를 따라 라이브러리 블록으로 가는 옵션
'off'
(디폴트 값) | 'on'
링크를 따라 라이브러리 블록으로 가는 옵션으로, 'FollowLinks'
와 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다. 검색할 시스템을 지정하지 않은 경우 find_system
은 'FollowLinks'
를 'on'
으로 설정했든 'off'
로 설정했든지에 상관없이 불러온 라이브러리를 검색 결과에 포함합니다. 'FollowLinks'
를 'LookUnderMasks'
와 함께 사용하여 서브시스템 내의 라이브러리 링크를 업데이트할 수 있습니다. 서브시스템에서 라이브러리 링크 업데이트하기 항목을 참조하십시오.
IncludeCommented
— 주석 처리된 블록을 포함시키는 옵션
'off'
(디폴트 값) | 'on'
주석 처리된 블록을 검색에 포함하는 옵션으로, 'IncludeCommented'
와 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다.
LoadFullyIfNeeded
— 부분적으로 불러온 모델을 불러오는 옵션
'on'
(디폴트 값) | 'off'
부분적으로 불러온 모델을 불러오는 옵션으로, 'LoadFullyIfNeeded'
와 함께 'on'
(모델을 불러옴) 또는 'off'
(불러오기를 비활성화함)가 쉼표로 구분되어 지정됩니다. 예를 들어, 불러오기 경고를 방지하려면 이 옵션을 사용합니다.
LookUnderMasks
— 마스크 내부를 검색하는 옵션
'graphical'
(디폴트 값) | 'none'
| 'functional'
| 'all'
| 'on'
| 'off'
마스크 내부를 검색하는 옵션으로, 'LookUnderMasks'
와 함께 다음 옵션 중 하나가 쉼표로 구분되어 지정됩니다.
'graphical'
— 작업 공간과 대화 상자를 갖지 않는 마스크 처리된 서브시스템을 검색에 포함합니다.'none'
— 마스크 처리된 서브시스템을 검색에서 건너뜁니다.'functional'
— 대화 상자를 갖지 않는 마스크 처리된 서브시스템을 검색에 포함합니다.'all'
— 마스크 처리된 서브시스템을 모두 검색에 포함합니다.'on'
— 마스크 처리된 서브시스템을 모두 검색에 포함합니다.'off'
— 마스크 처리된 서브시스템을 검색에서 건너뜁니다.
RegExp
— 검색 표현식을 정규 표현식으로 처리하는 옵션
'off'
(디폴트 값) | 'on'
검색 표현식을 정규 표현식으로 처리하는 옵션으로, 'RegExp'
와 함께 'on'
(검색 표현식을 정규 표현식으로 처리함) 또는 'off'
가 쉼표로 구분되어 지정됩니다. MATLAB® 정규 표현식에 대한 자세한 내용은 정규 표현식 항목을 참조하십시오.
SearchDepth
— 검색 심도를 제한하는 옵션
양의 정수 문자형 벡터 또는 string형 스칼라
검색 심도를 지정된 수준으로 제한하는 옵션으로, 'SearchDepth'
와 함께 양의 정수 문자형 벡터 또는 string형 스칼라가 쉼표로 구분되어 지정됩니다. 예를 들어, 불러온 시스템만 검색하려면 '0'
을, 최상위 시스템의 블록과 서브시스템까지 검색하려면 '1'
을, 최상위 시스템과 그 자식까지 검색하려면 '2'
를 지정하는 식으로 합니다. 디폴트는 모든 수준을 검색하는 것입니다.
Variants
— Variant를 검색하는 옵션
'ActiveVariants'
(디폴트 값) | 'AllVariants'
| 'ActivePlusCodeVariants'
참고
Variants
인수는 제거될 예정입니다. MatchFilter
를 대신 사용하십시오. 자세한 내용은 호환성 관련 고려 사항 항목을 참조하십시오.
Variant를 검색하는 옵션으로, 'Variants'
와 함께 다음 옵션 중 하나가 쉼표로 구분되어 지정됩니다.
'ActiveVariants'
— Variant Subsystem에서 활성 Variant 선택지만 검색합니다.'AllVariants'
— Variant Subsystem에서 모든 Variant 선택지를 검색합니다.'ActivePlusCodeVariants'
— 시뮬레이션에서 활성 상태이면서 생성 코드의 일부가 되는 모든 Variant 선택지를 Variant Subsystem에서 검색합니다.
이 검색 제약 조건은 Variant 제어 모드가 expression
또는 label
로 설정된 Variant Subsystem 블록에만 적용됩니다. 모든 유형의 Variant 블록에 대해 동작하도록 하려면 find_system
함수를 MatchFilter
옵션과 함께 사용하십시오.
MatchFilter
— 검색에서 요소를 일치시키고 필터링하는 옵션
함수 핸들
검색에서 블록, 시스템, 선, 포트, 주석 등의 요소를 일치시키고 필터링하는 옵션으로, 함수 핸들로 지정됩니다. 요소를 검색에 포함할지 검색에서 건너뛸지를 결정하려면 MatchFilter
를 사용하십시오.
이 인수를 통해 다음이 가능합니다.
사용자 지정 필터 함수로 요소를 필터링할 수 있습니다.
필터가 일치하지 않을 때 요소가 처리되는 것을 방지할 수 있습니다.
내부적으로 결과를 필터링하도록 블록, 선 또는 주석에 복합 필터를 적용할 수 있습니다.
명명된 함수는 MATLAB 프로그램 파일 내에서 정의해야 합니다. 이 함수는 요소의 핸들을 입력으로 받아 두 개의 출력을 반환합니다.
function [match, prune] = func(element)
입력
element
는 처리 중인 블록의 핸들입니다.첫 번째 출력
match
는 논리값입니다.false
인 경우 요소를 검색에서 건너뜁니다.두 번째 출력
prune
은 선택적 논리값으로,element
가 서브시스템인 경우에만 적용됩니다. 디폴트 값은false
입니다. 이 값이true
로 설정된 경우 검색에서 전체 서브시스템이 제외됩니다.
예: 사용자가 직접 정의한 필터 함수 nonInOutBlocks
에서 MatchFilter
를 사용하여 모델에서 Inport가 아니거나 Outport가 아닌 모든 블록 찾기.
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
load_system('vdp'); blks = find_system('vdp', 'MatchFilter', @nonInOutBlocks)
Variant: Simulink®는 시뮬레이션에서 활성 상태이거나 생성 코드의 일부가 되는 Variant 블록을 찾기 위해 다음과 같이 내장된 일치 필터 함수를 제공합니다.
Simulink.match.activeVariants
— 모델 컴파일 후 시뮬레이션에서 활성 상태인 블록을 찾는 필터 함수.Simulink.match.codeCompileVariants
— 모델 컴파일 후 생성 코드의 일부가 되는 블록을 찾는 필터 함수.Simulink.match.allVariants
— 블록의 상태가 Variant에 따라 활성이든 비활성이든 상관없이 모든 블록을 찾는 필터 함수.Simulink.match.variantAssemblySubsystems
— 모든 Variant Assembly Subsystem 블록을 찾는 필터 함수.
참고
정확한 결과를 얻으려면 Simulink.match.activeVariants
필터와 Simulink.match.codeCompileVariants
필터를 사용하기 전에 먼저 모델을 컴파일해야 합니다. 모델이 컴파일되지 않았으면 필터는 모델의 모든 블록을 반환합니다.
이러한 필터의 컴파일 전/후 결과를 비교한 예를 보려면 Use find_system with Built-In MatchFilter Options for Variant Blocks 항목을 참조하십시오.
예: Simulink.match.activeVariants
필터를 사용하여 모델에서 활성 Variant 찾기.
openExample('simulink_variants/BuiltInMatchFiltersWithfindsystemForVariantBlocksExample'); model='sldemo_variant_subsystems'; load_system(model); assignin('base','VSS_MODE',2); set_param(model, 'SimulationCommand', 'update'); activeBlks = find_system(model, 'MatchFilter', @Simulink.match.activeVariants);
예: Simulink.match.codeCompileVariants
필터를 사용하여 C 생성 코드의 일부가 되는 Variant 선택지 찾기.
openExample('simulink_variants/BuiltInMatchFiltersWithfindsystemForVariantBlocksExample'); load_system('sldemo_variant_subsystems'); assignin('base','VSS_MODE',2); sldemo_variant_subsystems([], [], [], 'compileForCodegen'); activeBlks= find_system('sldemo_variant_subsystems', 'MatchFilter', @Simulink.match.codeCompileVariants); sldemo_variant_subsystems([], [], [], 'term');
예: Simulink.match.allVariants()
필터를 사용하여 모델에서 모든 블록 찾기.
find_system('sldemo_variant_subsystems', 'MatchFilter', @Simulink.match.allVariants);
예: Simulink.match.variantAssemblySubsystems()
필터를 사용하여 모델에서 모든 Variant Assembly Subsystem 블록 찾기.
openExample('simulink_variants/ChoicesMaskVariantAssemblySubsystemMaskParamObjectExample'); load_system('slexVariantAssemblySubsystemWithMask') find_system('slexVariantAssemblySubsystemWithMask', 'MatchFilter', @Simulink.match.variantAssemblySubsystems)
출력 인수
버전 내역
R2006a 이전에 개발됨R2022b: Variants
인수 제거에 대한 경고
향후 릴리스에서 Variants
인수가 제거될 예정이기 때문에 다음 경고가 추가되었습니다.
find_system
함수를Variants
인수 없이 사용할 경우, 이 함수는 Variant Subsystem 블록의 비활성 선택지를 검색에서 건너뛰면 경고를 생성합니다.모델의 Variant Subsystem 블록에 두 개의 Variant 선택지
Linear Controller
와Nonlinear Controller
가 있다고 가정해 보겠습니다.Nonlinear Controller
블록은 활성 선택지입니다.다음 명령은 비활성
Linear Controller
블록을 건너뛰고 경고를 생성합니다.blocks = find_system('sldemo_variant_subsystems/Controller')
Warning: Using find_system without the 'Variants' argument skips inactive Variant Subsystem blocks in the search. This behavior will change in a future release to look at all choices of the Variant Subsystem. To find blocks that are active in simulation or code generation, compile the model and use the built-in variant filters with the 'MatchFilter' option. blocks = 12×1 cell array {'sldemo_variant_subsystems/Controller' } {'sldemo_variant_subsystems/Controller/sensor1' } {'sldemo_variant_subsystems/Controller/sensor2' } {'sldemo_variant_subsystems/Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor1' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor2' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/1-D Lookup Table'} {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Out1' } {'sldemo_variant_subsystems/Controller/Out1' }
값이
'AllVariants'
로 설정된Variants
인수를 사용하면 함수는 경고를 생성합니다.blocks = find_system('sldemo_variant_subsystems/Controller','Variants','AllVariants')
Warning: 'Variants' will be removed. Instead of using 'Variants' with value set to 'AllVariants', use 'MatchFilter' with value set to @Simulink.match.allVariants. blocks = 19×1 cell array {'sldemo_variant_subsystems/Controller' } {'sldemo_variant_subsystems/Controller/sensor1' } {'sldemo_variant_subsystems/Controller/sensor2' } {'sldemo_variant_subsystems/Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Linear Controller' } {'sldemo_variant_subsystems/Controller/Linear Controller/sensor1' } {'sldemo_variant_subsystems/Controller/Linear Controller/sensor2' } {'sldemo_variant_subsystems/Controller/Linear Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Linear Controller/Add' } {'sldemo_variant_subsystems/Controller/Linear Controller/Discrete↵Transfer Fcn'} {'sldemo_variant_subsystems/Controller/Linear Controller/Out1' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor1' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor2' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/sensor3' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/1-D Lookup Table' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Out1' } {'sldemo_variant_subsystems/Controller/Out1' }
R2022a: 모든 Variant 블록을 찾는 새로운 내장 일치 필터
내장 일치 필터인 Simulink.match.allVariants
를 사용하여, 블록의 상태가 Variant에 따라 활성이든 비활성이든 상관없이 Variant 모델에 있는 모든 블록을 찾을 수 있습니다. 이 필터가 AllVariants
대신 권장되는 대체 옵션입니다.
제거될 예정임 | 권장되는 대체 옵션 |
---|---|
find_system(model,'Variants', ... 'AllVariants'); | find_system(model,'MatchFilter', ... @Simulink.match.allVariants); |
R2021a: Variant 블록이 있는 모델에서 Variants
인수와 MatchFilter
인수의 디폴트 동작이 변경됨
Variants
:find_system
함수를Variants
인수를 지정하지 않고 사용할 경우, 현재 이 함수는 기본적으로 Variant Subsystem 블록의 활성 Variant 선택지만 검색에 포함합니다.그 외 Variant Source, Variant Sink, Variant Subsystem 같은 다른 Variant 블록에서 Variant Subsystem 외부에 조건 전파 파라미터가
on
으로 설정된 경우 이 함수는 모든 선택지를 검색에 포함합니다.모델의 Variant Subsystem에 두 개의 Variant 선택지
Linear Controller
와Nonlinear Controller
가 있는 경우를 가정해 보겠습니다.다음 명령은 모델에서 활성 Add 블록만 반환합니다.
add_blocks = find_system('sldemo_variant_subsystems/Controller',... 'BlockType','Sum')
add_blocks = 1×1 cell array {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add'}
MatchFilter
:find_system
함수를MatchFilter
인수와 함께 사용할 경우, 이 함수는 기본적으로 활성 및 비활성 Variant 선택지에 필터를 적용합니다.모델의 Variant Subsystem에 두 개의 Variant 선택지
Linear Controller
와Nonlinear Controller
가 있는 경우를 가정해 보겠습니다. 필터 함수findAddBlocks
는 모델에서 모든 Add 블록을 찾습니다.function match = findAddBlocks(handle) match = strcmp(get_param(handle, 'Type'), 'block') &&... strcmp(get_param(handle, 'BlockType'), 'Sum'); end
다음 명령은 모델에서 활성 및 비활성 Add 블록을 반환합니다.
add_blocks = find_system('sldemo_variant_subsystems','MatchFilter',... @findAddBlocks)
add_blocks = 2×1 cell array {'sldemo_variant_subsystems/Controller/Linear Controller/Add' } {'sldemo_variant_subsystems/Controller/Nonlinear Controller/Add'}
R2021a: Variants
인수는 제거될 예정임
향후 릴리스에서 Variants
인수는 find_system
에서 제거될 예정입니다. Variants
인수를 사용한 함수 호출은 여전히 작동하지만 경고가 발생합니다.
find_system
함수에 Variants
인수를 사용하면 검색 결과가 일관되지 않습니다. find_system
함수는 편집 시 동작입니다. 하지만 모든 유형의 Variant 블록을 갖고 있는 모델에서 어떤 블록이 활성 상태인지 아닌지 결정하려면 모델을 컴파일해야 합니다.
시뮬레이션 또는 코드 생성 중에 활성 상태인 Variant 블록을 찾으려면, 모델을 컴파일하고 find_system
함수를 MatchFilter
인수와 함께 사용하십시오.
다음 표에는 Variants
인수의 각기 다른 값에 대해 권장되는 대체 옵션이 나와 있습니다.
제거될 예정임 | 권장되는 대체 옵션 |
---|---|
find_system(model,'Variants', ... 'ActiveVariants'); | set_param(model,'SimulationCommand','update'); find_system(model,'MatchFilter', ... @Simulink.match.activeVariants); |
find_system(model,'Variants', ... 'ActivePlusCodeVariants'); | model([], [], [], 'compileForCodegen'); activeBlks= find_system(model,'MatchFilter', ... @Simulink.match.codeCompileVariants); model([], [], [], 'term'); |
find_system
함수를 사용할 때 MatchFilter
인수와 Variants
인수를 모두 지정할 수는 없습니다.
다음 명령은 오류를 생성합니다.
find_system(bdroot,'MatchFilter',@Simulink.match.activeVariants,... 'Variants','ActiveVariants');
R2020b: 검색 중에 MatchFilter
를 사용하여 요소를 필터링함
검색 중에 모델 요소를 일치시키고 필터링하려면, 사용자 지정 필터 함수를 정의하고 함수 핸들을 MatchFilter
이름-값 인수에 값으로 전달합니다.
시뮬레이션에서 활성 상태이거나 생성 코드의 일부가 되는 Variant 블록을 찾으려면, 모델을 컴파일한 후에 내장 일치 필터 함수 Simulink.match.activeVariants
, Simulink.match.codeCompileVariants
, Simulink.match.allVariants
를 사용합니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)