Main Content

get_param

파라미터 이름과 값 가져오기

설명

예제

value = get_param(object,parameter)object로 지정된 대상 객체의 지정된 파라미터 parametervalue를 반환합니다. 대상 객체는 경로 또는 핸들로 지정된 모델, 서브시스템, 라이브러리, 블록, 선, 포트 또는 버스 요소 포트 요소가 될 수 있습니다.

먼저 관련된 Simulink® 모델, 서브시스템 또는 라이브러리를 열거나 불러오고 이 함수를 호출합니다.

예제

모두 축소

다음 입력 인수와 함께 get_param 함수를 사용하여 블록 파라미터의 값을 가져올 수 있습니다.

  • 블록 핸들, 또는 블록 이름을 포함한 전체 블록 경로(예: 'myModel/mySubsystem/myblock')

  • 파라미터 이름

이 예제에서는 Alpha-sensor Low-pass Filter라는 Transfer Function 블록으로 지정된 전달 함수의 계수를 가져옵니다.

  • 이 블록은 slexAircraftExample 모델의 Controller 서브시스템에 있습니다.

  • 전달 함수 분자의 계수는 Numerator 파라미터에 저장됩니다. 전달 함수 분모의 계수는 Denominator 파라미터에 저장됩니다.

예제를 엽니다. 그런 다음 slexAircraftExample 모델을 불러옵니다.

mdl = 'slexAircraftExample';
load_system(mdl)

전달 함수 계수를 가져옵니다.

path = [mdl,'/Controller/Alpha-sensor Low-pass Filter'];
num = get_param(path,'Numerator')
num = 
'[1]'
denom = get_param(path,'Denominator')
denom = 
'[Tal,1]'

블록 경로가 길고 여러 파라미터를 가져오려는 경우 블록 핸들을 사용해 보십시오.

다음 입력 인수와 함께 get_param 함수를 사용하여 블록 파라미터의 값을 가져올 수 있습니다.

  • 블록 핸들, 또는 블록 이름을 포함한 전체 블록 경로(예: 'myModel/mySubsystem/myblock')

  • 파라미터 이름

이 예제에서는 Alpha-sensor Low-pass Filter라는 Transfer Function 블록으로 지정된 전달 함수의 계수를 가져옵니다.

  • 이 블록은 slexAircraftExample 모델의 Controller 서브시스템에 있습니다.

  • 전달 함수 분자의 계수는 Numerator 파라미터에 저장됩니다. 전달 함수 분모의 계수는 Denominator 파라미터에 저장됩니다.

예제를 엽니다. 그런 다음 getSimulinkBlockHandle 함수를 사용하여 블록 핸들을 가져옵니다. 블록 핸들을 가져오면서 해당 모델을 동시에 불러오려면 getSimulinkBlockHandle 함수의 두 번째 인수를 true로 지정하십시오.

path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true)
h = 489.0011

파라미터 값을 가져오려면 핸들을 사용하여 블록을 지정합니다. 핸들 값을 직접 입력하지 마십시오. MATLAB® 명령 창의 getSimulinkBlockHandle 함수에서 출력된 값은 반올림으로 인해 핸들 값과 일치하지 않을 수 있습니다. 대신, 변수에 핸들을 할당한 다음 변수 이름을 사용하여 블록을 지정하십시오. 이 예제에서는 값이 h라는 변수에 할당됩니다.

num = get_param(h,'Numerator')
num = 
'[1]'
denom = get_param(h,'Denominator')
denom = 
'[Tal,1]'

다음 입력 인수와 함께 get_param 함수를 사용하여 블록 파라미터의 값을 가져올 수 있습니다.

  • 블록 핸들, 또는 블록 이름을 포함한 전체 블록 경로(예: 'myModel/mySubsystem/myblock')

  • 파라미터 이름

이 예제에서는 파라미터 이름을 가져오는 방법을 보여줍니다.

slexAircraftExample 모델에서 Alpha-sensor Low-pass Filter라는 Transfer Function 블록의 전달 함수 계수를 가져온다고 가정하겠습니다. 이렇게 하려면 전달 함수 계수를 저장하는 파라미터의 이름을 가져와야 합니다.

예제를 엽니다.

Alpha-sensor Low-pass Filter라는 Transfer Function 블록의 핸들을 가져옵니다. 블록 핸들을 가져오면서 해당 모델을 동시에 불러오려면 getSimulinkBlockHandle 함수의 두 번째 인수를 true로 지정하십시오.

path = 'slexAircraftExample/Controller/Alpha-sensor Low-pass Filter';
h = getSimulinkBlockHandle(path,true);

get_param 함수를 사용하여 Alpha-sensor Low-pass Filter라는 Transfer Function 블록의 모든 블록 파라미터 이름을 가져옵니다.

get_param(h,'DialogParameters')
ans = struct with fields:
                    Numerator: [1x1 struct]
                  Denominator: [1x1 struct]
          ParameterTunability: [1x1 struct]
            AbsoluteTolerance: [1x1 struct]
    ContinuousStateAttributes: [1x1 struct]

출력에 전달 함수 계수가 Numerator 파라미터와 Denominator 파라미터를 사용하여 지정되었음이 표시됩니다. 이러한 파라미터 이름을 사용하여 전달 함수의 분자와 분모의 계수를 가져옵니다.

num = get_param(h,'Numerator');
denom = get_param(h,'Denominator')
denom = 
'[Tal,1]'

다음 입력 인수와 함께 get_param 함수를 사용하여 블록 파라미터의 값을 가져올 수 있습니다.

  • 블록 핸들, 또는 블록 이름을 포함한 전체 블록 경로(예: 'myModel/mySubsystem/myblock')

  • 파라미터 이름

이 예제에서는 전체 블록 경로 및 이름을 가져오는 방법을 보여줍니다.

경로 및 이름 가져오기

slexAircraftExample 모델에서 필터 역할을 하는 모든 Transfer Function 블록의 전달 함수 계수를 가져온다고 가정하겠습니다. 이렇게 하려면 모델에서 필터 역할을 하는 모든 Transfer Function 블록의 이름과 경로를 가져와야 합니다.

예제를 엽니다. 그런 다음 slexAircraftExample 모델을 불러옵니다.

mdl = 'slexAircraftExample';
load_system(mdl)

find_system 함수를 사용하여 slexAircraftExample 모델에 있는 모든 블록의 경로를 가져옵니다.

paths = find_system(mdl,'Type','Block');

검색 심도가 지정되지 않은 경우 find_system 함수는 모델 계층 구조의 지정된 수준과 지정된 수준에 포함된 모든 하위 수준에서 모든 블록을 찾습니다. slexAircraftExample은 모델 계층 구조의 최상위 수준이므로 이 명령은 모델 계층 구조의 모든 수준에서 모든 블록을 반환합니다.

또는 필터가 있는 서브시스템을 아는 경우 get_param 함수를 사용하십시오. get_param 함수는 지정된 수준에 포함된 서브시스템이 아닌 모델 계층 구조의 지정된 수준에 있는 블록의 경로만 반환합니다. 이 예제에서 필터는 Controller 서브시스템의 최상위 수준에 있습니다.

paths=get_param(mdl+'/Controller','blocks');

키워드로 경로 및 이름 필터링하기

slexAircraftExample 모델에서 필터 역할을 하는 Transfer Function 블록은 블록 이름에 filter 또는 Filter라는 단어가 있습니다. 블록 경로 목록이 있다면 단어 filter 또는 Filter가 포함된 블록을 가져옵니다.

filterpaths = paths(contains(paths,{'Filter','filter'}));

블록 파라미터 값 가져오기

블록 이름을 사용하여 전달 함수 계수를 가져올 수 있습니다. 예를 들어, 다음 명령을 사용하여 Alpha-sensor Low-Pass 필터의 전달 함수 계수를 가져옵니다.

num = get_param(filterpaths{1},'Numerator');
denom = get_param(filterpaths{1},'Denominator')
denom = 
'[Tal,1]'

vdp 모델의 블록 유형 목록을 가져옵니다.

예제를 엽니다. 그런 다음 vdp 모델을 불러옵니다.

load_system('vdp')

vdp 모델의 블록 경로와 이름 목록을 가져옵니다.

blockpaths = find_system('vdp','Type','Block');

vdp 모델의 각 블록에 대해 BlockType 파라미터의 값을 가져옵니다.

blocktypes = get_param(blockpaths,'BlockType')
blocktypes = 12x1 cell
    {'CustomCallbackButton'}
    {'Constant'            }
    {'SubSystem'           }
    {'Product'             }
    {'Scope'               }
    {'Math'                }
    {'Sum'                 }
    {'Sum'                 }
    {'Integrator'          }
    {'Integrator'          }
    {'Outport'             }
    {'Outport'             }

다음 입력 인수와 함께 get_param 함수를 사용하여 모델 파라미터의 값을 가져올 수 있습니다.

  • 모델 이름

  • 모델 파라미터 이름

IntegerOverflowMsg 파라미터의 값은 모델이 정수 오버플로를 처리하는 방법을 나타냅니다. 모델은 메시지를 출력하지 않거나 경고 메시지 또는 오류 메시지를 출력할 수 있습니다.

두 모델의 IntegerOverflowMsg 파라미터 값을 비교한다고 가정하겠습니다.

예제를 엽니다. 그런 다음 vdpf14 모델을 불러옵니다.

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

vdpf14 모델의 IntegerOverflowMsg 파라미터 값을 가져옵니다.

vdpval = get_param('vdp','IntegerOverflowMsg');
f14val = get_param('f14','IntegerOverflowMsg');

정수 오버플로가 발생할 경우 vdp 모델은 경고를 출력하는 반면, f14 모델은 어떤 메시지도 출력하지 않습니다.

strcmp 함수를 사용하여 두 파라미터 값을 비교합니다.

strcmp(vdpval,f14val)
ans = logical
   0

strcmp 함수는 0을 출력하는데, 이는 두 모델의 IntegerOverflowMsg 파라미터 값이 서로 다름을 나타냅니다.

다음 입력 인수와 함께 get_param 함수를 사용하여 모델 파라미터의 값을 가져올 수 있습니다.

  • 모델 이름

  • 모델 파라미터 이름

어떤 상황이 각각 메시지 없음, 경고 메시지, 오류 메시지로 처리되는지에 관한 일관성을 보장하기 위해 두 모델의 메시지 파라미터 값을 비교한다고 가정하겠습니다. 하지만 모든 메시지 파라미터의 이름을 알고 있지는 않습니다.

예제를 엽니다. 그런 다음 vdpf14 모델을 불러옵니다.

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

모든 모델 파라미터 목록을 가져옵니다.

params = get_param('vdp','ObjectParameters');

이 함수는 구조체를 반환합니다. 모델 파라미터 이름이 포함된 셀형 배열을 만듭니다.

names = fieldnames(params);

메시지 파라미터는 약어 Msg로 끝납니다. 약어 Msg를 포함하는 모든 모델 파라미터 이름을 가져옵니다.

msgnames = names(contains(names,'Msg'));

vdpf14 모델의 메시지 파라미터 값을 비교합니다. 서로 다른 값을 가진 파라미터의 이름을 출력합니다.

vdpval = cell(1,length(msgnames));
f14val = vdpval;

for i=1:length(msgnames)
    vdpVal{i} = get_param('vdp',msgnames{i});
    f14Val{i} = get_param('f14',msgnames{i});
    if(strcmp(vdpVal{i},f14Val{i})<1)
        disp(msgnames{i})
    end
end
IntegerOverflowMsg
IntegerSaturationMsg

두 메시지 파라미터의 값이 서로 다릅니다.

다음에 대한 옵션 목록을 가져오려면 키워드 options와 함께 get_param 함수를 사용하십시오.

  • 블록 파라미터

  • 모델 파라미터

  • 객체 속성(예: 주석의 가로 정렬 옵션)

이 예제에서는 블록 파라미터, 마스크 처리된 파라미터, 모델 파라미터에 대한 옵션 목록을 가져오는 방법을 보여줍니다.

블록 파라미터에 대한 옵션 목록 가져오기

예제를 엽니다. 그런 다음 vdp 모델을 불러옵니다.

load_system('vdp')

Square 블록의 Output signal type 파라미터에 대한 옵션 목록을 가져옵니다.

funcoptions = get_param('vdp/Square','options@OutputSignalType')
funcoptions = 1x3 cell
    {'auto'}    {'real'}    {'complex'}

마스크 처리된 서브시스템 파라미터에 대한 옵션 목록 가져오기

Mu라는 마스크 처리된 Subsystem 블록의 Read/Write permissions 파라미터에 대한 옵션 목록을 가져옵니다.

get_param('vdp/Mu','options@Permissions')
ans = 1x3 cell
    {'ReadWrite'}    {'ReadOnly'}    {'NoReadOrWrite'}

모델 파라미터에 대한 옵션 목록 가져오기

AlgebraicLoopMsg라는 모델 파라미터에 대한 옵션 목록을 가져옵니다.

get_param('vdp','options@AlgebraicLoopMsg')
ans = 1x3 cell
    {'none'}    {'warning'}    {'error'}

주석에 대한 옵션 목록 가져오기

vdp 모델에서 주석을 찾습니다.

h = find_system(gcs,'FindAll','on','Type','annotation');

행렬 h의 핸들에 해당하는 주석 텍스트를 출력합니다.

get_param(h,'PlainText')
ans = 3x1 cell
    {'Copyright 2004-2022 The MathWorks, Inc.'}
    {'Van der Pol Equation'                   }
    {'x'' - µ(1-x^2) x' + x = 0'              }

제목 주석 'Van der Pol Equation'의 가로 정렬에 대한 옵션 목록을 가져옵니다.

get_param(h(2),'options@HorizontalAlignment')
ans = 1x3 cell
    {'left'}    {'center'}    {'right'}

get_param 함수에 키워드 value를 함께 사용하여 마스크 처리된 블록 파라미터의 값에 액세스할 수 있습니다.

예제를 엽니다. 그런 다음 vdp 모델을 엽니다.

open_system('vdp')

Mu라는 마스크 처리된 Subsystem 블록의 gain 파라미터 값을 가져옵니다.

get_param('vdp/Mu','value@gain')
ans = 1

모델에서 블록을 더블 클릭합니다.

마스크에서 gain 파라미터를 변경하는 슬라이더를 이동합니다.

gain 파라미터의 값을 다시 가져옵니다.

get_param('vdp/Mu','value@gain')
ans = 1

전역 파라미터의 이름과 값을 가져옵니다.

전역 파라미터 이름 목록 가져오기

Simulink® 루트 파라미터 이름과 모델 파라미터 이름 간의 차이를 찾아서 전역 파라미터 이름 목록을 가져올 수 있습니다.

예제를 엽니다. 그런 다음 vdp 모델을 불러옵니다.

load_system('vdp')

모든 모델 파라미터의 이름을 가져옵니다.

modelparamnames = fieldnames(get_param('vdp','ObjectParameters'));

Simulink 루트 파라미터 이름의 목록을 가져옵니다.

rootparamnames = fieldnames(get_param(0,'ObjectParameters'));

루트 파라미터 이름 목록과 모델 파라미터 이름 목록 간의 차이를 찾아서 전역 파라미터 이름을 가져옵니다.

globalparamnames = setdiff(rootparamnames,modelparamnames);

전역 파라미터 값 가져오기

전역 파라미터의 값을 가져옵니다.

globalparamval = get_param(0,'CurrentSystem')
globalparamval = 
'vdp'

입력 인수

모두 축소

객체나 루트의 이름, 경로 또는 핸들로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열, 숫자형 스칼라 또는 0으로 지정됩니다.

대상 객체를 지정하는 방법은 유형마다 다릅니다.

  • 모델 — 모델 이름 또는 핸들.

  • 서브시스템 — 서브시스템 이름 또는 핸들.

  • 라이브러리 — 라이브러리 이름 또는 핸들.

  • 블록 — 블록 경로 또는 핸들.

  • 선 — 선 핸들.

  • 포트 — 포트 핸들.

  • 버스 요소 포트 요소 — 요소 레이블이 있는 모델 컴포넌트의 블록 경로. 이 요소는 최상위 버스, 중첩된 버스, 신호, 메시지 등 포트의 모든 요소가 될 수 있습니다.

여러 객체에 공통 파라미터를 지정하려면 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 핸들로 구성된 배열을 사용하십시오. 지정된 모든 객체에는 지정된 파라미터가 있어야 합니다. 그렇지 않으면 함수에서 오류를 반환합니다.

현재 Simulink 세션의 전역 파라미터 및 모델 파라미터를 포함하여 루트 파라미터 이름을 가져오려면 0을 지정하십시오.

  • 전역 파라미터에는 편집기 기본 설정과 Simulink Coder™ 파라미터가 포함됩니다.

  • 모델 파라미터에는 구성 파라미터, Simulink Coder 파라미터, Simulink Code Inspector™ 파라미터가 포함됩니다.

예: 'vdp/Mu'

예: 'mymodel/Subsystem1/Out1.nonsinusoidal.saw'

  • 동일한 블록에 get_param을 여러 번 호출하는 경우 숫자 핸들을 사용하여 블록을 지정해야 합니다. 이 방법은 get_param에 전체 블록 경로를 사용하는 것보다 더 효율적입니다. getSimulinkBlockHandle을 사용하여 블록 핸들을 가져옵니다.

  • 일반적으로 사용자는 MATLAB®이 표시하는 것보다 더 많은 자릿수를 지정해야 하므로 5.007과 같이 핸들의 숫자를 수동으로 지정하려고 하지 마십시오. 변수에 핸들을 할당하고 그 변수 이름을 사용하십시오.

데이터형: char | string | double

파라미터, 속성 또는 특성의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 일부 이름은 대/소문자를 구분합니다.

다음 표에는 특수 사례가 나와 있습니다.

지정된 파라미터결과
'ObjectParameters'

지정된 객체의 파라미터 이름이 구조체형 배열의 별도 필드로 되어 있습니다.

'DialogParameters'

블록 대화 상자의 파라미터 이름이 구조체형 배열의 별도 필드로 되어 있습니다. 블록에 마스크가 있는 경우 함수는 대신 마스크 파라미터를 반환합니다.

파라미터, 속성, 특성에 관한 자세한 내용은 해당하는 도움말 페이지에서 프로그래밍 방식의 사용법 내용을 참조하십시오. 예를 들면 다음과 같습니다.

예: 'ObjectParameters'

예: 'Solver'

예: 'SimulationCommand'

예: 'Position'

예: 'NameLocation'

데이터형: char | string

출력 인수

모두 축소

파라미터 값으로, 파라미터 유형이 결정하는 형식으로 반환됩니다. 여러 객체를 지정하는 경우 출력은 셀형 배열입니다.

다음 표에는 특수 사례가 나와 있습니다.

지정된 파라미터결과
'ObjectParameters'

지정된 객체의 파라미터 이름이 구조체형 배열의 별도 필드로 되어 있습니다.

'DialogParameters'

블록 대화 상자의 파라미터 이름이 구조체형 배열의 별도 필드로 되어 있습니다. 블록에 마스크가 있는 경우 함수는 대신 마스크 파라미터를 반환합니다.

get_param(0,'ObjectParameters')를 지정하여 루트 파라미터를 가져오는 경우 value 출력은 루트 파라미터 이름이 구조체의 별도 필드로 되어 있는 구조체형 배열입니다. 각 파라미터 필드는 다음 필드를 포함하는 구조체입니다.

  • 유형 — 파라미터 유형 값은 'boolean', 'string', 'int', 'real', 'point', 'rectangle', 'matrix', 'enum', 'ports' 또는 'list'입니다.

  • 열거형 — 'enum' 파라미터 유형에만 적용되는 열거형 문자형 벡터 값으로 구성된 셀형 배열입니다.

  • 특성 — 파라미터 특성을 정의하는 문자형 벡터로 구성된 셀형 배열입니다. 값은 'read-write', 'read-only', 'read-only-if-compiled', 'write-only', 'dont-eval', 'always-save', 'never-save', 'nondirty' 또는 'simulation'입니다.

버전 내역

R2006a 이전에 개발됨