Matlab 对连续时间信号的运算

Matlab 对连续时间信号的运算

1、连续时间系统零状态响应

  • 题目&函数说明
    连续时间系统的微分方程为 y"(t) + 4y’(t) + 3y(t) = f’(t) + 2f(t)
    当 输入信号 f(t) = 20e-2tu(t) 时,初始值 y(0-) = 2, y’(0-) = 1, 求系统的零状态响应

Matlab 库函数中的 lsim()能对微分方程描述的 LTI 连续时间系统的响应进行仿真。
函数 lsim()的调用格式: lsim(b,a,x,t)
该调用格式中,a 和 b 是由描述系统的微分方程左边和右边系数构成的两个行向量;t 为输入信号时间范围的向量,x 为输入信号在向量 t 定义的时间点上的抽样值。

  • 结果:
    Matlab 对连续时间信号的运算_第1张图片

代码:

% 微分方程 y"(t) + 4y'(t) + 3y(t) = f'(t) + 2f(t)
% 输入信号 f(t) = 20e^(-2t)u(t) 
% 初始值 y(0^(-)) = 2, y'(0^(-)) = 1
% 求系统的零状态响应

a = [1 4 3];
b = [1 2];
[A B C D]=tf2ss(b,a);   %tf2ss函数将传递函数模型转化为状态空间模
sys=ss(A,B,C,D);        %sys由函数ss构造的状态空间模型
p=0.01;                 %定义取样时间间隔
t=0:p:3;                %定义时间范围

f=zeros(1,length(t))
zi=[1 2];
y1=lsim(sys,f,t,zi);     %系统的零输入响应
x=20*exp(-2*t);
y2=lsim(sys,x,t);        %系统的零状态响应
y3=lsim(sys,x,t,zi);     %系统的全响应
subplot(3,1,1);
plot(t,y1);
title("系统的零输入响应");

subplot(3,1,2);
plot(t,y2);
title("系统的零状态响应");

subplot(3,1,3);
plot(t,y3);
title("系统的全响应");

2、连续时间系统冲激响应和阶跃响应

  • 题目&函数说明
    已知 y’‘(t) + 2y’(t) + 3y(t) = f(t), 求 系统的冲激响应和阶跃响应的时域波形

MATLAB 为用户提供了专门用于连续系统冲激响应并绘制其时域波形的impulse 函数。其函数 impulse()的调用格式:impulse(b,a)。其中 a 和 b 是由描述系统的微分方程左边和右边系数构成的两个行向量。
用于连续系统阶跃响应并绘制其时域波形的 step 函数。函数 step()的调用格式为:step(b,a)。其中 a 和 b 是由描述系统的微分方程左边和右边系数构成的两个行向量。

  • 结果
    Matlab 对连续时间信号的运算_第2张图片

代码:

a=[1 2 3];
b=[1];
subplot(2,1,1)
impulse(b,a)
title("冲激响应")
subplot(2,1,2)
step(b,a)
title("阶跃响应")

3、卷积积分

  • 题目&函数说明
    计算两个指数信号 f1(t) = e-6t , f2(t) = e-3t 的卷积
    Matlab 的库函数 conv()只能计算离散序列 f1 与 f2 的卷积和,构造函数 conv() 实现两连续信号的卷积积分。
    Y=conv(x,h)
    实现 x,h 二个序列的卷积,假定都是从 n=0 开始,Y 序列的长度为 x,h 序列的长度两序列长度之和再减 1。
  • 结果
    Matlab 对连续时间信号的运算_第3张图片

代码:

t=0:0.01:1;
y1=exp(-6*t);
y2=exp(-3*t);
y=conv(y1,y2);
l1=length(y1);

l2=length(y2);
l=length(y);
subplot(3,1,1);
plot(t,y1);
title("f1(t)");

subplot(3,1,2);
plot(t,y2);
title("f1(t)");

t1=0:0.01:2;
subplot(3,1,3);
plot(t1,y);
title("f1(t) * f2(t)");

觉得不错的,可以点个赞哦~
在这里插入图片描述

你可能感兴趣的:(#,▶,信号与系统,零状态响应,冲激响应,阶跃响应,信号卷积,信号与系统仿真)