이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
모델 데이터 액세스 및 수정
이 예제에서는 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.
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
분자와 분모는 셀형 배열로 반환됩니다. 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.
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차 전달 함수가 있다고 가정하겠습니다.
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