我是靠谱客的博主 谨慎皮卡丘,这篇文章主要介绍信号与系统——MATLAB信号处理——信号与系统的时域分析五:实验部分:,现在分享给大家,希望可以做个参考。

实验一:信号与系统的时域分析

    • 一:信号的微分与积分
      • 积分运算
      • 微分运算
    • 二:连续时间、离散时间系统的零状态与零输入响应的求解分析
      • A:连续时间系统的零状态与零输入响应的求解分析
        • 1)零状态响应求解
        • 2)零输入响应求解
      • B:离散时间系统的零状态与零输入响应的求解分析
    • 三:连续时间、离散时间系统冲激响应与阶跃响应的求解分析
      • A:连续时间系统冲激响应与阶跃响应的求解分析
      • B:离散时间系统冲激响应与阶跃响应的求解分析
    • 四:连续时间、离散时间系统的卷积(Convolution)求解
      • A:连续时间系统的卷积求解
      • B:离散时间系统的卷积求解
  • 五:实验部分:
      • 实验内容:
      • 实验代码及分析
        • 1.信号的微分与积分,信号的尺度变化
        • 2.连续时间LTI系统的响应
        • 3.已知序列求卷积的结果

一:信号的微分与积分

积分运算

对于连续时间信号,其积分运算使用diff函数来完成,其语句格式为

复制代码
1
2
diff(function,'variable',n)

function表示要进行求导运算的信号,variable为求导运算的独立变量,n是求导的阶数,默认一阶导数。

微分运算

对于连续时间信号,其微分运算使用int函数来完成,其语句格式为

复制代码
1
2
int(function,'variable',a,b)

function表示要进行求导运算的信号,variable为求导运算的独立变量,a,b为积分的上下限,a,b忽略时表示求不定积分。
实例:
f ( x ) = x ; f(x)=x; f(x)=x;的微分与积分
代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
syms t f2; %定义符号变量 f2=t; t=-5:5; %定义变量t的范围 subplot(131); ezplot(f2,t); title('原函数') grid on ylabel('x(t)'); f=diff(f2,'t',1); %对函数f2中的变量t进行一次微分(即求一阶导数) subplot(132) ezplot(f,t); title('微分函数') grid on ylabel('x(t)') f=int(f2,'t'); %对函数f1中的变量t进行积分 subplot(133) ezplot(f,t); title('积分函数') grid on ylabel('x(t)')

微分与积分运算

二:连续时间、离散时间系统的零状态与零输入响应的求解分析

A:连续时间系统的零状态与零输入响应的求解分析

1)零状态响应求解

MATLAB提供了一个lsim函数用来求解零初始条件微分方程
基本格式:

复制代码
1
2
y=lsim(sys,f,t)

t表示计算系统响应的抽样点向量,f是系统输入信号向量,sys是LTI系统模型,用来表示微分方程,差分方程和状态方程。

sys调用的格式为:

复制代码
1
2
sys=tf(b,a)

b和a分别表示微分方程的右端和左端的系数向量,例如:对于方程
y ‘ ’ ( t ) + 2 y ′ ( t ) + 3 y ( t ) = 10 c o s 2 π t y ‘’(t) + 2y '(t) + 3y(t) =10cos2pi t y(t)+2y(t)+3y(t)=10cos2πt

b=[1],a=[1 2 3];

代码:

复制代码
1
2
3
4
5
6
7
8
9
10
ts=0;te=5;dt=0.01; sys=tf([1],[1 2 3]); t=ts:dt:te; f=10*cos(2*pi*t); y=lsim(sys,f,t); plot(t,y); xlabel('t(s)');ylabel('y(t)'); title('零状态响应') grid on;

零输入响应

2)零输入响应求解

MATLAB函数:
基本格式:

复制代码
1
2
3
4
y = dsolve(eq,cond,'t') eq='D2y+3*Dy+2*y=0'; cond='y(0)=1,Dy(0)=2';

参数eq 表示各个微分方程,用Dy,D2y,D3y来表示 y 的一阶导数,二阶导数,三阶导数;
参数cond 表示初始条件或者起始条件;
参数 v 表示自变量,默认是变量 t

实例:

复制代码
1
2
3
4
5
6
7
ts=0;te=5;dt=0.01; t=ts:dt:te; eq='D2y+3*Dy+2*y=0'; %齐次解求零输入响应 cond='y(0)=1,Dy(0)=2'; yzi=dsolve(eq,cond,'t'); ezplot(yzi,t);

零输入响应

B:离散时间系统的零状态与零输入响应的求解分析

三:连续时间、离散时间系统冲激响应与阶跃响应的求解分析

A:连续时间系统冲激响应与阶跃响应的求解分析

在MATLAB中,求解冲激响应与阶跃响应可以使用函数 impluse 与 step ,详细的内容可以使用帮助系统查看
基本形式:

复制代码
1
2
3
4
sys=tf(b,a); h=impulse(sys,t); %冲激响应 g=step(sys,t); %阶跃响应

b和a分别表示微分方程的右端和左端的系数向量
实例:
求解下面信号的冲激响应 y " ( t ) + 2 y ′ ( t ) + 3 y ( t ) = u ( t ) , t > 0 y"(t)+2y'(t)+3y(t)=u(t),t>0 y"(t)+2y(t)+3y(t)=u(t)t>0
求解代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
t=0:0.002:4; sys=tf([1],[1 2 3]); h=impulse(sys,t); %冲激响应 g=step(sys,t); %阶跃响应 subplot(2,1,1);plot(t,h); grid on; xlabel('时间/s');ylabel('h(t)'); title('冲激响应'); subplot(2,1,2);plot(t,g); grid on; xlabel('时间/s');ylabel('g(t)'); title('阶跃响应');

冲激响应与阶跃响应

B:离散时间系统冲激响应与阶跃响应的求解分析

四:连续时间、离散时间系统的卷积(Convolution)求解

A:连续时间系统的卷积求解

对于连续时间信号,其卷积运算使用conv函数来完成,卷积积分需要乘以步长dt
基本格式:

复制代码
1
2
f=conv(f1,f2)*dt;

f为卷积之后返回的结果(信号),f1,f2都是进行卷积运算的信号

连续信号的卷积积分定义为
f ( x ) = f 1 ( t ) ∗ f 2 ( t ) = ∫ − ∞ ∞ f 1 ( τ ) f 2 ( t − τ ) d τ f(x)=f_{1}(t)*f_{2}(t)=int_{-infty}^{infty} f_{1}(tau )f_{2}(t-tau)dtau f(x)=f1(t)f2(t)=f1(τ)f2(tτ)dτ
实例:
f 1 ( t ) = u ( t ) − u ( t − 2 ) , f ( 2 ) = 2 e t u ( t ) f_{1}(t)=u(t)-u(t-2),f(2)=2e^{t} u(t) f1(t)=u(t)u(t2),f(2)=2etu(t)
的卷积积分
代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
%/ 连续时间信号的卷积 dt=0.01; t=-1:dt:2.5; f1=heaviside(t)-heaviside(t-2); f2=2*exp(t).*heaviside(t); f=conv(f1,f2)*dt; n=length(f); tt=(0:n-1)*dt-2; subplot(221); plot(t,f1); grid on; axis([-1,2.5,-0.2,1.2]); title('f1(t)'); xlabel('t'); ylabel('f1(t)'); subplot(222); plot(t,f2); grid on; axis([-1,2.5,-0.2,1.2]); title('f2(t)'); xlabel('t'); ylabel('f2(t)'); subplot(212); plot(tt,f); grid on; title('卷积积分'); xlabel('t'); ylabel('f3(t)');

连续时间信号的卷积

B:离散时间系统的卷积求解

基本格式:

复制代码
1
2
c=conv(a,b);

a、b分别是待卷积的两序列的向量表示,c是卷积结果;向量c的长度为向量a、b的长度之和减1,即

复制代码
1
2
length(c)=length(a)+length(b)-1

离散时间信号的卷积定义为:
f [ k ] = f 1 [ k [ ∗ f 2 [ k ] = ∑ m = − ∞ ∞ f 1 [ m ] f 2 [ k − m ] f[k]=f_{1}[k[*f_{2}[k]= sum_{m=-infty}^{infty} f_{1}[m]f_{2}[k-m] f[k]=f1[k[f2[k]=m=f1[m]f2[km]
实例:已知序列求卷积的结果

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
x=[1,3,5,7]; y=[1,1,1,1]; z=conv(x,y); subplot(131); stem(0:length(x)-1,x); grid on subplot(132); stem(0:length(y)-1,y); grid on subplot(133); stem(0:length(z)-1,z); grid on

五:实验部分:

实验内容:

  1. 画出 f ( t ) = ( 2 + t ) ( ξ ( t ) − ( ξ ( t − 3 ) ) 、 f ( t 2 − 1 ) 、 f ( t ) f(t)=(2+t)(xi (t)-(xi(t-3))、f(frac{t}{2} -1)、f(t) f(t)=(2+t)(ξ(t)(ξ(t3))f(2t1)f(t) 微分和积分的波形图。

  2. 已知某连续因果LTI系统的微分方程为 y " ( t ) + 7 y ′ ( t ) + 12 y ( t ) = x ( t ) , t > 0 , x ( t ) = u ( t ) y"(t)+7y'(t)+12y(t)=x(t),t>0,x(t)=u(t) y"(t)+7y(t)+12y(t)=x(t),t>0,x(t)=u(t)
    初始状态 y ( 0 − ) = 1 , y ′ ( 0 − ) = 2 y(0^{-})=1,y'(0^{-})=2 y(0)=1,y(0)=2
    用matlab求零输入响应和冲激响应h(t) 。

  3. 计算卷积 x [ k ] ∗ y [ k ] x[k]*y[k] x[k]y[k] ,并画出卷积结果。已知 ,
    x [ k ] = { 1 , 2 , 2 , 1 ; k = 0 , 1 , 2 , 3 } , y [ k ] = { 2 , 3 , 1 ; k = 0 , 1 , 2 } x[k]=left {1,2,2,1;k=0,1,2,3 right } ,y[k]=left { 2,3,1;k=0,1,2 right } x[k]={1,2,2,1;k=0,1,2,3},y[k]={2,3,1;k=0,1,2}

实验代码及分析

1.信号的微分与积分,信号的尺度变化

代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
syms t f2; f0=heaviside(t)-heaviside(t-3); f1=2+t; f2=f0.*f1; t=-10:10; subplot(231); ezplot(f2,t); title('原函数') grid on f=diff(f2,1); subplot(232); ezplot(f,t); title('微分函数') grid on f=int(f2,'t'); subplot(233); ezplot(f,t); title('积分函数') grid on syms t f5; T=(t-2)/2; f3=heaviside(T)-heaviside(T-2); f4=T+2; f5=f3.*f4; subplot(234); t=-10:10; ezplot(f5,t); xlabel('t');ylabel('f5'); title('原函数') grid on f5=diff(f5,1); subplot(235); ezplot(f5,t); title('微分函数') grid on f5=int(f5,'t'); subplot(236); ezplot(f5,t); title('积分函数') grid on

运行结果:
实验一第一题

2.连续时间LTI系统的响应

求解零输入响应代码:

复制代码
1
2
3
4
5
6
7
8
ts=0;te=5;dt=0.01; t=ts:dt:te; eq='D2y+7*Dy+12*y=0'; %齐次解求零输入响应 cond='y(0)=1,Dy(0)=2'; yzi=dsolve(eq,cond,'t'); yzi=simplify(yzi); ezplot(yzi,t);

在这里插入图片描述
求解冲激响应代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
t=0:0.002:4; sys=tf([1],[1 7 12]); h=impulse(sys,t); %冲激响应 g=step(sys,t); %阶跃响应 subplot(2,1,1);plot(t,h); grid on; xlabel('时间/s');ylabel('h(t)'); title('冲激响应'); subplot(2,1,2);plot(t,g); grid on; xlabel('时间/s');ylabel('g(t)'); title('阶跃响应');

冲激响应与阶跃响应

3.已知序列求卷积的结果

代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
x=[1,2,2,1]; y=[2,3,1]; z=conv(x,y); subplot(131); stem(0:length(x)-1,x); grid on subplot(132); stem(0:length(y)-1,y); grid on subplot(133); stem(0:length(z)-1,z); grid on

运行结果:
实验一第三题

最后

以上就是谨慎皮卡丘最近收集整理的关于信号与系统——MATLAB信号处理——信号与系统的时域分析五:实验部分:的全部内容,更多相关信号与系统——MATLAB信号处理——信号与系统内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部