拉普拉斯变换及其反变换

Laplace变换及其反变换的定义为:
命令:
Fs=laplace(ft,t,s);%求时域函数ft的Laplace变换Fs
ft=ilaplace(Fs,s,t);%求频域函数Fs的Laplace反变换ft
syms s t;
syms a;
f=str2sym('exp(2*t)+5*dirac(a-t)')
f = 
F=laplace(f,t,s)
F = 

ilaplace(F,s,t)
ans = 

 

时域响应曲线的绘制

3-13-1绘制零状态响应曲线和零输入响应曲线
num=[1.9691,5.0395];
den=[1,0.5572,0.6106];
step(num,den)%绘制阶跃响应曲线
[A,B,C,D]=tf2ss(num,den);%根据系统传递函数求系统的状态模型
x0=[-1;0];
initial(A,B,C,D,x0)
grid on
为什么结果图中y一直是从-2开始的,正确结果应该是从-1开始吧?
因为y=C*x+D*u,这里的y0=C*x0=-1.9691,所以从-2附近开始
 
3-13-2输入周期20s,赋值为1的方波,求系统的输出响应
num=3;
den=[1,2,3];
[u,t]=gensig('square',20);%幅值为1,周期为20s的方波信号u
lsim(num,den,u,t)%求系统的输出响应
 
3-13-3绘制时间常数为0.5s、1s、2s时,一阶系统的单位阶跃响应曲线
close all
T=[0.5,1,2];
figure(1)
hold on
for i=1:length(T)
num=1;
den=[T(i),1];
step(num,den)
end
hold off
legend({'0.5','1','2'});
 
3-13-4观察无阻尼自然震荡角频率
(1)不同阻尼比下的单位阶跃响应
wn=6;
z=[0.1,0.3,0.5,0.7,1,2];
close all
figure(1)
hold on
for i=1:length(z)
num=wn^2;
den=[1,2*z(i)*wn,wn^2];
step(num,den)
end
hold off
legend({'0.1','0.3','0.5','0.7','1','2'});
(2)不同无阻尼自然震荡角频率下的单位阶跃响应
z=0.7;
wn=[2:2:8,12];
close all
figure(1)
hold on
for i=1:length(wn)
num=wn(i)^2;
den=[1,2*z*wn(i),wn(i)^2];
step(num,den)
end
hold off
legend({'2','4','6','8','12'});
 
3-13-5求系统的上升时间
num=5*[1,5,6];
den=[1,6,10,8];
step(num,den)
%下面求解上升时间、峰值时间、最大超调量和调整时间
syms s t;
syms a;
F=str2sym('5*(s^2+5*s+6)/(s*(s^3+6*s^2+10*s+8))')
F = 

f=ilaplace(F,s,t)
f = 

c=15/4-7*exp(-t)*(cos(t)-sin(t)/7)/2-exp(-4*t)/4;
ezplot(t,c)
xlabel('Time(seconds)');
ylabel('Amplitude');
title('Response');
Mp=vpa(max(subs(c,t,[0:0.001:6])),3)%最大超调量
Mp = 4.02
tp=vpa(vpasolve(diff(c)),3)%峰值时间
tp = 2.21
tr=vpa(vpasolve(c==15/4),3)%上升时间
tr = 1.43
ts=vpa(max(vpasolve(abs(c-15/4)==0.05*15/4,3)),3)%调整时间
ts = 2.93
 
3-13-6已知开环传递函数
绘制单位斜坡响应曲线和给定误差曲线,求给定稳态误差终值
close all
num=1.5;
den=[1,3,2,0];
s=tf(num,den)
s =

1.5
-----------------
s^3 + 3 s^2 + 2 s

Continuous-time transfer function.

sc=feedback(s,1)%求单位负反馈系统闭环传递函数
sc =

1.5
-----------------------
s^3 + 3 s^2 + 2 s + 1.5

Continuous-time transfer function.

numc=sc.num{1}
numc = 1×4
0 0 0 1.5000
 
 
denc=sc.den{1}
denc = 1×4
1.0000 3.0000 2.0000 1.5000
 
 
denc=[denc,0];%闭环传递函数乘以1/s
t=[0:0.01:15];%单位斜坡信号
y=step(numc,denc,t);%求单位斜坡响应
subplot(211);
plot(t,t,t,y)
xlabel('t/s');
ylabel('y(t)');
title('Response');
e=t-y';
subplot(212);
plot(t,e)
grid on
xlabel('t/s');
ylabel('e(t)');
title('error');
esr=e(length(t))%给定稳态误差
esr = 1.3237
 

根轨迹的绘制

4-6-1绘制常规根轨迹
close all
num=1;
den=[1,6,8,0];
rlocus(num,den);
sgrid
axis equal
[k,p]=rlocfind(num,den,[1:5])
k = 1×5
15 48 105 192 315
 
 
p = 3×5 complex
-5.0000 + 0.0000i -6.0000 + 0.0000i -7.0000 + 0.0000i -8.0000 + 0.0000i -9.0000 + 0.0000i
-0.5000 + 1.6583i 0.0000 + 2.8284i 0.5000 + 3.8406i 1.0000 + 4.7958i 1.5000 + 5.7228i
-0.5000 - 1.6583i 0.0000 - 2.8284i 0.5000 - 3.8406i 1.0000 - 4.7958i 1.5000 - 5.7228i
 
 
 
4-6-2绘制常规根轨迹,并找到当系统阻尼比为0.707时系统闭环极点的位置
close all
num=[4,3,1];
den=[3,5,1,0];
rlocus(num,den);
sgrid(0.707,1.5)
axis equal
 
4-6-3绘制以α为参变量的根轨迹
给定
k1=[0.5,1,2.5,5];
den=[1,1,0,0];
numc=1;
close all
subplot(221);
num=[0,k1(1),k1(1),0];
denc=num+den;
rlocus(numc,denc);
legend({'K_1=0.5'});
subplot(222);
num=[0,k1(2),k1(2),0];
denc=num+den;
rlocus(numc,denc);
legend({'K_1=1'});
subplot(223);
num=[0,k1(3),k1(3),0];
denc=num+den;
rlocus(numc,denc);
legend({'K_1=2.5'});
subplot(224);
num=[0,k1(4),k1(4),0];
denc=num+den;
rlocus(numc,denc);
legend({'K_1=5'});
 

伯德图、极坐标图的绘制

5-7-1给定开环传递函数,绘制伯德图
close all
num=1;
den=[1,0.2,1];
bode(num,den);
grid
 
5-7-2给定开环传递函数,绘制极坐标图和对数幅相图
close all
num=2;
den=[1,1,2];
bode(num,den);
grid
nyquist(num,den);
grid
nichols(num,den);
grid
 
5-7-3给定开环频率特性,绘制闭环频率特性
close all
num=10;
den=[0.005,0.15,1,0];
s=tf(num,den);
sc=feedback(s,1);
numc=sc.num{1};
denc=sc.den{1};
bode(num,den);
grid
bode(numc,denc);
grid
 
5-7-4给定开环传递函数,求相角裕度和增益裕度
close all
num=1;
den=[1,0.4,1];
[mag,phase,w]=bode(num,den);
margin(mag,phase,w)
 

线性系统校正

6-8-1单位反馈系统
分析比较该系统串联比例控制、比例微分控制、比例积分控制的校正作用
num=1;
den=[1,0.8,1];
num_p=0.32;
den_p=[1,0.8,0.32];
num_pd=[0.614,1];
den_pd=[1,1.414,1];
num_pi=[0.5,0.005];
den_pi=[1,0.8,0.5,0.005];
close all
figure(1)
hold on
step(num,den);
step(num_p,den_p);
step(num_pd,den_pd);
step(num_pi,den_pi);
hold off
legend({'','P','PD','PI'});
 
5-7-5分析设有单位负反馈的Ι型系统串联具有超前校正作用的控制器前后的频率特性和时域响应
num_b=5;%b-before代表校正前
den_b=[1,5,4,0];
s_b=tf(num_b,den_b);
sc_b=feedback(s_b,1);
numc_b=sc_b.num{1};
denc_b=sc_b.den{1};
z=-1.2;
p=[0,-1,-4,-4.95];
k=29.7;
[num_a,den_a]=zp2tf(z,p,k);
s_a=tf(num_a,den_a);
sc_a=feedback(s_a,1);
numc_a=sc_a.num{1};
denc_a=sc_a.den{1};
close all
[mag_b,phase_b,w_b]=bode(numc_b,denc_b);
margin(mag_b,phase_b,w_b)
[mag_a,phase_a,w_a]=bode(numc_a,denc_a);
margin(mag_a,phase_a,w_a)
step(numc_b,denc_b);
hold on
step(numc_a,denc_a);
hold off
legend({'before','after'});


自动控制理论的MATLAB仿真实例(一)的更多相关文章

  1. 自动控制理论的MATLAB仿真实例(二)

    %求方程的解 x=sym('x'); fx=(3*x*x+2*x)*(x*x+2.32*x+4)-(2*x+2.32)*(x*x*x+x*x) fx = 

  2. UVW平台运动控制算法以及matlab仿真

    UVW平台运动控制算法以及matlab仿真   最近公司同事因为对某视觉对位平台的运动控制算法有疑问,所以来请教我.由于我也是第一次接触到UVW自动对位平台(也可以叫XXY自动对位平台),于是找了一些 ...

  3. 经典功率谱估计及Matlab仿真

    原文出自:http://www.cnblogs.com/jacklu/p/5140913.html 功率谱估计在分析平稳各态遍历随机信号频率成分领域被广泛使用,并且已被成功应用到雷达信号处理.故障诊断 ...

  4. MATLAB仿真总结

    MATLAB仿真过程中,编写MATLAB代码的时候犯了很多错误,做了很多蠢事.记录下自己犯错的点点滴滴,并引以为戒.使用MATLAB版本为2014a,以下内容如有不当还请指正. 1. 仿真开始前清理工 ...

  5. 极化码的matlab仿真(1)——参数设置

    根据老师的安排,对于极化码的了解从仿真开始. 仿真的手段有很多种.可以利用C,C++,matlab等进行仿真的实现.其中matlab由于具有强大的函数库,和壮观的矩阵运算能力,被(我们老师课题组)看中 ...

  6. (转) 经典功率谱估计及Matlab仿真

    原文出自:http://www.cnblogs.com/jacklu/p/5140913.html 功率谱估计在分析平稳各态遍历随机信号频率成分领域被广泛使用,并且已被成功应用到雷达信号处理.故障诊断 ...

  7. PID各环节的意义和功能,自带PID的matlab编程实例

    这是PID的标准形式包括比例/积分/微分三部分,e为偏差 下面我们分析三个环节的作用,设:当前系统状态A,目标状态B, e=B-A,初始状态e>0 (以下是个人的理解,欢迎读者评论) 1 比例环 ...

  8. OFDM通信系统的MATLAB仿真(1)

    由于是第一篇博客,想先说点废话,其实自己早就想把学到的一些东西总结成文章随笔之类的供自己复习时查看的了.但是一是觉得自己学的的不够深入,总结也写不出什么很深刻的东西:二是觉得网上也有海量的资料了,需要 ...

  9. OFDM通信系统的MATLAB仿真(2)

    关于OFDM系统的MATLAB仿真实现的第二篇随笔,在第一篇中,我们讨论的是信号经过AWGN信道的情况,只用添加固定噪声功率的高斯白噪声就好了.但在实际无线信道中,信道干扰常常是加性噪声.多径衰落的结 ...

随机推荐

  1. 学习python-20191108(1)Mysql、Flask

    一.使用pymysql模块操作MYSQL 导入pymysql模块: pip install pymysql 1.增删改 import pymysql # 定义数据库连接信息 config = {    ...

  2. JAVA中String类以及常量池和常用方法

    一.String类的定义 String类特点:String 代表字符串.java程序中所有的字符串文字(例如:"abc")都被实现为String类的子类 String类特点:长度不 ...

  3. Java 9 新特性 – 内部类的方块操作符

    方块操作符 ( <> ) 在 Java 7 中就引入了,目的是为了使代码更可读. 但是呢,这个操作符一直不能在匿名内部类中使用 Java 9 修正了这个问题,就是可以在匿名内部类中使用方块 ...

  4. 4K时代,你不能不知道的HEVC

    最近追的美剧更新啦!但手机没连wifi,看视频心疼流量:画面不清晰,老是卡机:真是令人苦恼不已.别着急,或许在HEVC大范围普及之后,这一切烦恼都将不复存在了. HEVC是什么?它是High Effi ...

  5. JS一维数组、多维数组和对象的混合使用

    转载地址:http://blog.csdn.net/wangyuchun_799/article/details/38460515 引言 这篇文章的主要目的是讲解JavaScript数组和对象的混合使 ...

  6. sql执行过程

    作为一个程序员,几乎所有人都使用过 SQL 语言,无论是在命令行执行.程序调用,还是在 SQL 工具里,你都做过这样的事:写一个规范的 SQL 语句,然后等待数据库返回的结果,然后再基于结果做各种逻辑 ...

  7. keepalive笔记之二:keepalive+nginx(自定义脚本实现,上述例子也可以实现)

    keepalive的配置文件 ! Configuration File for keepalived global_defs { notification_email { acassen@firewa ...

  8. HF Java Chap 1

    介绍了java的工作方式以及几个有趣的小程序 Java的工作模式 大体来说有四个步骤: 源代码 编译器 编译器的输出 Java虚拟机 源代码 这是我们程序员接触到的部分.根据我们面临的问题,编写一个符 ...

  9. kali pinyin

    重装了kali,原来一直用的ibus pinyin重装之后再apt-get install的时候总是找不到包,换了各种源都不行,纠结N久果断换别的输入法了. apt-get install fcitx ...

  10. Redis(2)——跳跃表

    一.跳跃表简介 跳跃表(skiplist)是一种随机化的数据结构,由 William Pugh 在论文<Skip lists: a probabilistic alternative to ba ...