모델 데이터 액세스 및 수정
이 예제에서는 LTI 객체에 있는 파라미터 값과 메타데이터에 액세스하거나 이를 편집하는 방법을 설명합니다.
데이터 액세스
tf, zpk, ss 및 frd 명령은 모델 데이터를 단일 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.
Model Properties
TF 객체 G의 모든 속성을 보려면 다음을 입력합니다.
get(G)
Numerator: {[0 1 2]}
Denominator: {[1 3 10]}
Variable: 's'
IODelay: 0
InputDelay: 3
OutputDelay: 0
InputName: {''}
InputUnit: {''}
InputGroup: [1×1 struct]
OutputName: {''}
OutputUnit: {''}
OutputGroup: [1×1 struct]
Notes: [0×1 string]
UserData: []
Name: ''
Ts: 0
TimeUnit: 'seconds'
SamplingGrid: [1×1 struct]
첫 번째 4가지 속성인 Numerator, Denominator, IODelay, Variable은 TF 표현에만 적용됩니다. 다른 속성은 모든 LTI 표현에 공통으로 적용됩니다. help tf.Numerator를 이용하면 Numerator 속성 관련 추가 정보와 다른 속성의 비슷한 정보를 확인할 수 있습니다.
특정 속성의 값을 가져오려면 다음을 사용합니다.
G.InputDelay % get input delay valueans = 3
속성 이름의 의미를 쉽게 알 수 있는 약어를 사용해도 됩니다. 예를 들면 다음과 같습니다.
G.iod % get transport delay valueans = 0
G.var % get variableans = 's'
데이터 빨리 가져오기
tfdata, zpkdata, ssdata 또는 frdata를 사용하여 모든 모델 파라미터를 한 번에 가져올 수도 있습니다. 예를 들면 다음과 같습니다.
[Numerator,Denominator,Ts] = tfdata(G)
Numerator = 1×1 cell array
{[0 1 2]}
Denominator = 1×1 cell array
{[1 3 10]}
Ts = 0
분자와 분모는 셀형 배열로 반환됩니다. Numerator와 Denominator에 분자 및 분모 다항식(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.
Model Properties
set 명령은 점 표기법에 의한 대입과 동일하지만 여러 속성을 한 번에 설정할 수 있습니다.
G.Ts = 0.1;
G.Variable = 'q';
GG =
q + 2
q^(-3) * --------------
q^2 + 3 q + 10
Sample time: 0.1 seconds
Discrete-time transfer function.
Model Properties
민감도 분석 예제
모델 편집을 LTI 배열 지원과 함께 사용하면 파라미터 변동에 대한 민감도를 쉽게 확인할 수 있습니다. 예를 들어 2차 전달 함수가 있다고 가정하겠습니다.
.
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
