Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

모델 데이터 액세스 및 수정

이 예제에서는 LTI 객체에 있는 파라미터 값과 메타데이터에 액세스하거나 이를 편집하는 방법을 설명합니다.

데이터 액세스

tf, zpk, ssfrd 명령은 모델 데이터를 단일 MATLAB® 변수에 저장하는 LTI 객체를 만듭니다. 이 데이터에는 모델별 파라미터(예: 상태공간 모델용 A,B,C,D 행렬)와 일반 메타데이터(예: 입력 및 출력 이름)가 모두 포함됩니다. 데이터는 속성이라고 하는 고정된 데이터 필드 집합으로 분류됩니다.

다음과 같은 방법으로 모델 데이터에 액세스할 수 있습니다.

  • get 명령

  • 구조체와 유사한 점 표기법

  • 데이터 가져오기 명령

설명을 위해 SISO 전달 함수(TF)를 만들겠습니다.

G = tf([1 2],[1 3 10],'inputdelay',3)
G =
 
                  s + 2
  exp(-3*s) * --------------
              s^2 + 3 s + 10
 
Continuous-time transfer function.

TF 객체 G의 모든 속성을 보려면 다음을 입력합니다.

get(G)
       Numerator: {[0 1 2]}
     Denominator: {[1 3 10]}
        Variable: 's'
         IODelay: 0
      InputDelay: 3
     OutputDelay: 0
       InputName: {''}
       InputUnit: {''}
      InputGroup: [1x1 struct]
      OutputName: {''}
      OutputUnit: {''}
     OutputGroup: [1x1 struct]
           Notes: [0x1 string]
        UserData: []
            Name: ''
              Ts: 0
        TimeUnit: 'seconds'
    SamplingGrid: [1x1 struct]

첫 번째 4가지 속성인 Numerator, Denominator, IODelay, Variable은 TF 표현에만 적용됩니다. 다른 속성은 모든 LTI 표현에 공통으로 적용됩니다. help tf.Numerator를 이용하면 Numerator 속성 관련 추가 정보와 다른 속성의 비슷한 정보를 확인할 수 있습니다.

특정 속성의 값을 가져오려면 다음을 사용합니다.

G.InputDelay    % get input delay value
ans = 3

속성 이름의 의미를 쉽게 알 수 있는 약어를 사용해도 됩니다. 예를 들면 다음과 같습니다.

G.iod    % get transport delay value
ans = 0
G.var    % get variable
ans = 
's'

데이터 빨리 가져오기

tfdata, zpkdata, ssdata 또는 frdata를 사용하여 모든 모델 파라미터를 한 번에 가져올 수도 있습니다. 예를 들면 다음과 같습니다.

[Numerator,Denominator,Ts] = tfdata(G)
Numerator = 1x1 cell array
    {[0 1 2]}

Denominator = 1x1 cell array
    {[1 3 10]}

Ts = 0

분자와 분모는 셀형 배열로 반환됩니다. NumeratorDenominator에 분자 및 분모 다항식(I/O 쌍당 항목 하나)으로 구성된 셀형 배열이 포함되는 MIMO 사례와 동일합니다. SISO 전달 함수의 경우에는 플래그를 사용해 분자와 분모 데이터를 벡터로 반환할 수 있습니다. 예를 들면 다음과 같습니다.

[Numerator,Denominator] = tfdata(G,'v')
Numerator = 1×3

     0     1     2

Denominator = 1×3

     1     3    10

데이터 편집

set 또는 점 표기법으로 대응하는 속성값을 편집하면 LTI 객체에 저장된 데이터를 수정할 수 있습니다. 예를 들어 위에서 생성한 전달 함수 G의 경우에는

G.Ts = 1;

샘플 시간을 0에서 1로 변경하여 모델을 이산 모델로 재정의합니다.

G
G =
 
               z + 2
  z^(-3) * --------------
           z^2 + 3 z + 10
 
Sample time: 1 seconds
Discrete-time transfer function.

set 명령은 점 표기법에 의한 대입과 동일하지만 여러 속성을 한 번에 설정할 수 있습니다.

G.Ts = 0.1;
G.Variable = 'q';
G
G =
 
               q + 2
  q^(-3) * --------------
           q^2 + 3 q + 10
 
Sample time: 0.1 seconds
Discrete-time transfer function.

민감도 분석 예제

모델 편집을 LTI 배열 지원과 함께 사용하면 파라미터 변동에 대한 민감도를 쉽게 확인할 수 있습니다. 예를 들어 2차 전달 함수가 있다고 가정하겠습니다.

H(s)=s+5s2+2ζs+5

zeta 값이 다른 모델 3개를 만들고 보드 응답을 비교하면 감쇠 파라미터 zeta가 주파수 응답에 미치는 영향을 확인할 수 있습니다.

s = tf('s');

% Create 3 transfer functions with Numerator = s+5 and Denominator = 1
H = repsys(s+5,[1 1 3]);  

% Specify denominators using 3 different zeta values
zeta = [1 .5 .2];
for k = 1:3
  H(:,:,k).Denominator = [1 2*zeta(k) 5];  % zeta(k) -> k-th model
end

% Plot Bode response
bode(H)
grid

Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude (dB) contains 3 objects of type line. This object represents H. Axes object 2 with ylabel Phase (deg) contains 3 objects of type line. This object represents H.