MATLAB时域分析

背景

MATLAB对时域分析有两个现成的函数: step(SYS)和impulse(SYS),分别对应阶跃响应和脉冲响应,实际上,响应还有斜坡和加速度响应等等,它们共同对应于系统的输入环节。输出往往使我们需要求解的。在两者之间的环节,可以用\frac{X^{_{o}}(s)}{X^{_{i}}(s)}=G(s)传递函数来描述,这里仅对一些分式形式的传递函数进行讨论,可以包括惯性环节、微分环节、积分环节、复合环节、二阶振荡环节等等进行分析。

这里的实例用了\frac{30s+2}{s^{3}+5s^{2}+6s+8}

阶跃响应

x_{_{i}}(s)=1(t),X(s)=\frac{1}{s}。把分子分母的系数分别存入两个1维矩阵,然后直接调用step(num,den),num是分子系数,den是分母系数。

num1 = [30 2];
den1 = [1 5 8 6];
step(num1, den1);
grid on;

效果:

单位脉冲响应

x_{_{i}}(s)=\delta (t),X(s)=1。把分子分母的系数分别存入两个1维矩阵,然后直接调用step(num,den),num是分子系数,den是分母系数。

num1 = [30 2];
den1 = [1 5 8 6];
figure();
impulse(num1, den1);
grid on;

效果图:

斜坡响应

x_{_{i}}(s)=t,X(s)=\frac{1}{s^{^{2}}}。把分子分母的系数分别存入两个1维矩阵,这里并没有现成的函数,但是我们知道单位阶跃和斜坡响应的拉氏变换值差一个s平方,所以不妨用单位阶跃除以一个s的平方来的到同样的结果。这里我利用了sys=tf()构造了两个系统,第一个是G,第二个是G1。tf转换效果就是构造一些系统,比如你输入两个一维矩阵,那么就会构造一个分式。s=tf('s')则是构造了一个拉普拉斯变量,这里是我们的复变量s,当然这个等号左边的字母只是增加了可读性,并不一定用s。所以说来,上面两个响应也可以用tf变换来实现,可参考附件资源。

num1 = [30 2];
den1 = [1 5 8 6];
s = tf('s');
G = tf(num1, den1);
% divided by s^2 to transform impulse into ramp
G1 = G/s^2;
figure();
impulse(G1);
title('ramp response')
grid on;

效果图:

posted @   狂小虎  阅读(386)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示