我是靠谱客的博主 沉静玉米,最近开发中收集的这篇文章主要介绍自动化专业(控制)常用MATLAB函数及实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自动化专业(控制)常用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+s11+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+2s1的系数,num2是 s − 1 s-1 s1的系数,num是 ( s 2 + 2 s − 1 ) ( s − 1 ) (s^2+2s-1)(s-1) (s2+2s1)(s1)的系数
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 Gs)s0=G(z)z1

[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函数及实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部