概述
自动化专业(控制)常用MATLAB函数及实例
更新时间:2022/5/9 持续更新中……
其他:simulink常用模块
常用指令
- 求根
求 s 2 + 2 s + 2 = 0 s^2+2s+2 = 0 s2+2s+2=0的根
c = [1 2 2];
r = roots(c)
- 曲线标注
legend是根据曲线绘画顺序进行标注的
legend('R = 0.8的单位圆',‘阻尼比ζ = 0.5’);
- 多项式通分
G s = 1 / ( s + 1 ) + s 2 / ( s + 1 ) Gs = 1/(s+1)+s^2/(s+1) Gs=1/(s+1)+s2/(s+1)通分后可得到 s 2 + 1 s + 1 frac{s^2+1}{s+1} s+1s2+1
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)
- 分子分母提取
Gs = 1/(s+1),提取后num = 1;den = s+1
[num,den] = numden(Gs)
自控原理
- 求系统特征值(求矩阵特征值)
F = [-1 0;0.4 1];
p = eig(F)
- 分子(分母)乘积
num1是 s 2 + 2 s − 1 s^2+2s-1 s2+2s−1的系数,num2是 s − 1 s-1 s−1的系数,num是 ( s 2 + 2 s − 1 ) ( s − 1 ) (s^2+2s-1)(s-1) (s2+2s−1)(s−1)的系数
num1 = [1 2 -1];num2 = [1 -1];
num = conv(num1,num2);
- 零极点绘制
pzmap(num,den) %continue system
zplane(n,d) %discrete system
- 根轨迹绘制
可用于z平面根轨迹绘制 ,也可用于s平面根轨迹绘制
rlocus(num,den)
rlocfind %可在根轨迹上选择某一点,得出增益和闭环极点
- 可控可观性判断
Sc = ctrb(A,B),r1 = rank(Sc) %可控性矩阵
So = obsv(A,C),r2 = rank(So) %可观性矩阵
- 极点配置
利用ackerman公式可求取状态反馈增益阵,观测器增益
状态反馈
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) %降维观测器
- 传递函数与状态空间的转换
ss2tf、tf2ss
计算机控制系统
- 传递函数离散化
method有以下几种,z变换法(脉冲响应不变),向前差分法,向后差分法,带零阶保持器的z变换’zoh’,零极点匹配法‘matched’,双线性变换法‘tustin’,预修正双线性变换法‘prewarp’
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)
- 状态空间离散化c2d
采样周期T = 0.5s
A = [1 1;0 -1];B = [1;1];
[F,G] = c2d(A,B,0.5)
- w’变换
进行w’平面控制器设计时,可利用d2cm函数用tustin变换将z平面变换到w’平面
[num,den] = d2cm(n,d,T,'tustin')
DSP
- 两个序列的线性卷积
输入为x(n),系统单位脉冲响应函数为h(n),则输出y(n) = x(n)*h(n)
x1 = [1 2 1];
x2 = [1 0 2];
y = conv(x1,x2)
- 矩形序列
生成一个长度为10的矩形序列
xn = ones(1,10)
- 快速傅里叶变换FFT
对序列x(n)进行DFT的快速算法,注意变换点数一般选2^n
fft_len = 2^10;
Xk = fft(xn,fft_len)
- 序列补零
xn = [xn zeros(1,8)];%补8个零
- 频率响应
freqz函数
- 单位脉冲响应
dimpulse、impulse函数
在这里插入代码片
- 离散系统单位脉冲响应
[h,n] = impz(b,a,N)
- 群延迟响应
grpdelay(num,den)
最后
以上就是沉静玉米为你收集整理的自动化专业(控制)常用MATLAB函数及实例的全部内容,希望文章能够帮你解决自动化专业(控制)常用MATLAB函数及实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复