更新时间:2020/6/4 持续更新中……
c = [1 2 2];
r = roots(c)
legend('R = 0.8的单位圆',‘阻尼比ζ = 0.5’);
pretty(collect(Gs))
r是留数,p是极点.
示例:r = [1 -1];p = [-0.5 1];k = 2表示 1 s + 0.5 + − 1 s − 1 + 1 \frac{1}{s+0.5}+\frac{-1}{s-1}+1 s+0.51+s−1−1+1
[r,p,k] = residue(num,den)
[num,den] = numden(Gs)
F = [-1 0;0.4 1];
p = eig(F)
num1 = [1 2 -1];num2 = [1 -1];
num = conv(num1,num2);
pzmap(num,den) %continue system
zplane(n,d) %discrete system
rlocus(num,den)
rlocfind %可在根轨迹上选择某一点,得出增益和闭环极点
Sc = ctrb(A,B),r1 = rank(Sc) %可控性矩阵
So = obsv(A,C),r2 = rank(So) %可观性矩阵
状态反馈
K = acker(A,B,p) %continue system
K = acker(F,G,p) %discrete system
观测器
H = acker(A',C',p) %continus system
L = acker(F',C',p) %预测观测器
L = acker(F',(C*F)',p) %现今值观测器
L = acker(F22',F12',p) %降维观测器
z变换法(脉冲响应不变)
对传递函数 G ( s ) = 1 s + 1 G(s) = \frac{1}{s+1} G(s)=s+11进行z变换,先进行iLaplace变换成脉冲响应函数g(t),进行采样t = kT,对采样后序列可用ztrans函数进行z变换
syms k T;
Gs = 1/(s+1);
gkT = ilaplace(Gs,k*T); %T可以取为确定值
Gz = ztrans(gkT,z)
pretty(collect(Gz)) %通分结果
向前差分法、向后差分法
按照定义直接带入
syms T;%实际使用时可以带T计算,也可以给确定值
s = (z-1)/T; %向前差分
%s = (1-z^-1)/T; %向后差分
%s = (2/T)*(z-1)/(z+1); %双线性变换
Dz = (s*s+1)/(s*s+10.1*s+1);
pretty(collect(Dz))
c2dm、d2cm函数
c2dm :continue to discrete. d2cm: discrete to continue
采样时间T = 0.5
注意:使用‘matched’时候,要消除频谱混叠还应该在分子上乘一个 ( z + 1 ) (z+1) (z+1),此时需要进行静态增益匹配,即 G ( s ) ∣ s → 0 = G ( z ) ∣ z → 1 G(s)|_s→_0 = G(z)|_z→_1 G(s)∣s→0=G(z)∣z→1
[n,d] = c2dm(num,den,0.5,'zoh')
‘prewarp’
采样周期T = 0.5s,关键频率 ω = 2 r a d / s \omega = 2 rad/s ω=2rad/s
[n,d] = c2dm(num,den,0.5,'prewarp',2)
A = [1 1;0 -1];B = [1;1];
[F,G] = c2d(A,B,0.5)
[num,den] = d2cm(n,d,T,'tustin')
x1 = [1 2 1];
x2 = [1 0 2];
y = conv(x1,x2)
xn = ones(1,10)
fft_len = 2^10;
Xk = fft(xn,fft_len)
xn = [xn zeros(1,8)];%补8个零
在这里插入代码片
[h,n] = impz(b,a,N)
grpdelay(num,den)