Copyright ⓒ by Chul-Goo Kang(강철구)
1
CEMTool 6.0 사용법
Copyright ⓒ by Chul-Goo Kang(강철구)
벡터, 행렬의 입력과 연산
M>> A = [1 2 3;4, 5, -6;7 -8 9] or M>> a = [1 2 3 4 5 6]
M>> b = [2 exp(-0.2) sqrt(3)]
M>> I = eye(5) M>> Z = zero(2,3) M>> O = ones(2,3)
M>> a = A(1, : ) %A 의 1 행 M>> b = A(: , 2) %A 의 2 열 M>> pi %3.14159
M>> e = [ ] %empty vector or matrix
열우선 분석: 열별로 처리 M>> mx = max(A) %1x3 vector M>> mn = min(A) %1x3 vector M>> mv = mean(A) %1x3 vector M>> st = sort(A) %3x3, ascending M>> sm = sum(A) %1x3 vector M>> std(a) %standard deviation M>> cov(a) %covariance
복소수 입력과 연산 M>> x = 1+3*i or 1+3*j M>> angle(x) %radian angle M>> abs(x) %magnitude
M>> real(x), imag(x), real(A), imag(A) M>> y = conj(x)
M>> K = [1 j;-5*j 2]
M>> L = conj(K') % complex conjugate transpose
M>> y = exp(pi*j/3)
M>> B = A', 5*A, b*A
M>> C = A+B, A-B, A*B, A*inv(B) M>> a', 3*a,
M>> D = eig(A), det(A)
M>> [X, D] = eig(A)
M>>p = poly(A) %characteristic polynomial
M>> r = roots(p) M>> p = poly(r)
M>> polyval(p,5) %value of p(5) M>> a = [1 2]; b = [1 1];
M>> c = conv(a,b) %다항식의 곱 M>> [q, r]=deconv(c,a) %나눗셈
M>> norm(a), norm(A, 1), norm(A, 2)
M>> M = expm(A) % eA
M>> polyvalm(p, A) %p(A)의 값
M>> V=rand(3,3) or rand %난수. 0~1 의 수 M>> size(V) %dimension of V
M>> v = V(:) %vector, col. by col.
M>> prod(1:n) %1 에서 n 까지 곱 M>> prod(v) %vector 모든항의 곱 M>> A; % Semicolon supress printing.
M>> n=2:5 % n= [2 3 4 5]
% help 는 CEMTool 의 도움말참조.
% Blank spaces are optional.
그래프 그리기
M>> t = 0: 0.05: 10;
M>> y = sin(t); z = cos (t);
M>> plot(t, y) or plot(t, y, t, z)
%그래프화면의 선택사항에서 화면 확대 축 소 가능, 글자넣기에서 text 입력 가능. 시스 템 특성에서 첨두치 등 확인 가능
% loglog, semilogx, semilogy 등도 가능
Copyright ⓒ by Chul-Goo Kang(강철구)
2
전달함수와 상태방정식
G(s)=1/500s, H(s)=(s+1)/(s+2)일때 G(s)H(s)는
M>> ng = [1];
M>> dg = [500 0];
M>> nh = [1 1];
M>> dh = [1 2];
M>> [num,den] = series(ng,dg,nh,dh)
병렬연결이면 series 대신에 parallel 사용
폐루프전달함수 = G/(1+GH)
M>> [num,den]=feedback(ng,dg,nh,dh,-1)
For minimal realization; 극점-영점 소거 M>> num = [1 2];
M>> den = [1 3 2];
M>> [nm, dm] = minreal(num,den)
Y s U s
s
s s
x x
x
x u y x
x ( )
( )
,
3
3 2
0 1
2 3
1
0 1 0 1
2 2
1 2
1 2
M>> num = [0 1 3] or [1 3]
M>> den = [1 3 2]
M>> [A,B,C,D] = tf2ss(num, den)
%SIMO 이면, num=[num1;num2]. No miso.
M>> [n, d] = ss2tf(A,B,C,D) %simo 가능 M>> [n, d] = ss2tf(A,B,C,D,ui) %miso.
ui = 1, 2 등
M>> [z,p,k] = ss2zp(A,B,C,D) %simo M>> [z,p,k] = ss2zp(A,B,C,D,ui) %miso M>> [A,B,C,D] = zp2ss(z,p,k)
M>> [Am,Bm,Cm,Dm] =
canon(A,B,C,D,”modal”) %diagonal form If “companion”, observable canon. form
부분분수 구하기
B s A s
b s b s b s b
a s a s a s a
r s p
r s p
r
s p k s
m m
m m
n n
n n
n n ( )
( ) ( )
0 1 1
1
0 1
1 1
1 1
2 2
1
M>> [r, p, k] = residue(num, den) M>> [num, den] = residue(r, p, k)
이산시간 모델 구하기
( ) ( ) ( )
xAxBu xk 1 Adxk Bduk using ZOH M>> T = 0.01 % sampling time
M>> [Ad, Bd] = c2d(A, B, T)
과도응답 구하기
G(s) =(s+3)/(s^2 + 3*s + 2)
M>> t = [0:0.1:10]';
M>> y =step(num,den,t);or step(num,den) M>> y =step(A,B,C,D,iu,t); %iu 번째 입
력에 대한 계단입력 M>> y =impulse(num,den,t);
M>> y =impulse(A,B,C,D,iu,t);
M>> u = t;
M>> y = lsim(num,den,u,t); %linear simulation for arbitrary u.
M>> y = lsim(A,B,C,D,u,t,xo) %초기치 xo 에 대한 simulation.
M>> plot(t, y)
M>> dcgain(A,B,C,D) %-CA^{-1}B+D
근궤적
G(s) = K/[s*(s+1)*(s+2)]
M>> num=[1];
M>> den=[1 2 3 0];
M>> rlocus(num,den)
M>> k = logspace(0,1,500); %500 개 M>> r = rlocus(num,den,k)
Ogata, Example 5-2 M>> num = [1 2];
Copyright ⓒ by Chul-Goo Kang(강철구)
3 M>> den = [1 2 3];
M>> k = logspace(0,1);
M>> rlocus(num,den,k);
감쇠비=0.7 인 k 를 구하기 위하여 M>> k = logspace(0, 0.3, 10);
M>> rlocus(num,den,k)
를 그린다음 tracking 기능사용
주파수응답
M>> bode(num,den)
M>> [mag, phase]=bode(num,den);
M>> w=logspace(0.1,100,50) M>> semilogx(w, 20*log(mag)) M>> semilogx(w, phase)
G(s) = 1/(s^2 + 0.8*s + 1) M>> num=[0 0 1];
M>> den=[1 0.8 1];
M>> nyquist(num,den)
M>> w = logspace(0.01,20,50);
M>> [re,im]=nyquist(num,den,w);
M>> plot(re,im)
G(s) = 20*(s+1)/(s^4+7*s^3+20*s^2+50*s) M>> num=[20];
M>> den=[1 7 20 50 0];
M>> [gm, pm, wgc, wpc] = margin(num,den) or (A,B,C,D)
%gain, phase margin; crossover frequency
행렬 해석
Triangular Factorization (LU decomposition):
For any square matrix, A = LU;
Diagonal elements of L are 1.
M>> A = [1 2 3; 4 5 6; 7 8 0];
M>> [L, U] = lu(A)
Eigenvalue Decomposition:
For any square matrix A, Ax = x;
X is eigenvector, D is eigenvalue.
M>> [X, D] = eig(A)
Orthogonal Factorization (QR decomposition):
For any matrix A, A = QR;
Q is orthogonal, R is upper triangular.
M>> A = [A; 10 11 12]
M>> [Q, R] = qr(A)
Singular Value Decomposition:
For any matrix nxm A, A = USV’;
U is nxn orthogonal, V is mxm orthogonal, S is nxm diagonal and sii i,
iis singular value (real, nonnegative), ), ' ( ] , [ ), ( ] ,
[Vi2 eig A'A Ui2 eig AA
i i
i u
Av .
M>> [U,S,V] = svd(A)
환경설정
출력 데이터의 형식 지정 M>> format long
M>> pi
M>> format short M>> pi
지금까지 변수테이블의 모든 변수를 현재 작업중인 디렉토리에 파일로 저장
(default 는 work 디렉토리) M>> save filename 특정변수만 골라 저장 M>> save filename var1, var2
저장된 변수목록 보기 M>> list
저장된 변수 보기 ), ' ( ] ,
[V i2 eig AA
Copyright ⓒ by Chul-Goo Kang(강철구)
4 저장된 파일 읽어오기(작업디렉토리로부터) M>> load filename
상태공간 제어기 설계
플랜트
M>> A=[-0.4 0 –0.1; 1 0 0; -1 9 –0.2];
M>> B=[6 0 9]’;
M>> C=[0 0 1];
M>> D=0;
가제어성 조사 M>> S = ctrb(A, B) M>> rank(S)
가관측성 조사 M>> V = obsv(A,C) M>> rank(V)
A,B,C,D 로부터 개루프 영점/극점 구하기 M>> [zero, pole, gain] = ss2zp(A,B,C,D)
상태되먹임제어기 설계: 주어진 극점을 갖 도록 u = -Kx 에서 K 를 Ackermann 의 공식 으로 결정
M>> pole = [-2 -1+i -1-i]
M>> K = acker(A,B,pole)
관측기 설계:
M>> L = acker(A’, C’, pole)’
LQ regulator 설계:
) ( )
( )
(t Kxt R 1B Pxt
u T
1 0
PA PBRB P Q P
AT T
(A,B)가 제어가능하고, (A,Q1/2)이 관측가능 하면 양의 한정이고 유일한 P 가 존재한다.
M>> Q = 1000*eye(3);
M>> R = 1;
M>> [K, P] = lqr(A,B,Q,R)
Kalman 필터 설계:
Gw Bu Ax x
v Cx y
w 와 v 의 평균은 0 이고, 공분산(covariance) 은 Q ,o Ro이다.
), 1
( ˆ ˆ
ˆAxBuL yCx LSCTRo x
1 0
SAT SCTRoCS GQoGT AS
(A,Q1/2)이 제어가능하고, (A,C)가 관측가능 하면 양의 한정이고 유일한 S 가 존재한다.
M>> G = [1 0 0];
M>> Qo = 1;
M>> Ro = 1;
M>> [L, S] = lqe(A,G,C,Qo,Ro)