基于 Matlab 的信号和系统实验指导书及实验报告

目录

一、实验指导书

二、实验报告(仅部分)

1.连续时间信号在 Matlab 中的表示

2.连续时间信号在 Matlab 中的运算

3.连续时间 LTI 系统的时域分析

4.傅里叶变换(FT)及其性质

5.连续时间LTI系统的频率特性及频域分析


目录

一、实验指导书

链接:https://pan.baidu.com/s/1Wj2yZeIjMNxeWUl4VwIz8A 
提取码:jf6k

二、实验报告(仅部分)

说明:本报告数据及内容均来自网络整理,有错误可留言或自行修改,侵权删。

1.连续时间信号在 Matlab 中的表示

一、  实验原理

1、信号的定义和分类

2、连续信号的表示方法有两种:符号推理法和数值法。

从严格意义上讲,Matlab 数值计算的方法不能处理连续时间信号。然而,可利用连续信号在等时间间隔点的取样值来近似表示连续信号,即当取样时间间隔足够小时,这些离散样值能被 Matlab 处理,并且能较好地近似表示连续信号。

二、  实验目的

1、学会运用 Matlab 表示常用连续时间信号的方法

2、观察并熟悉这些信号的波形和特性

三、  实验环境

Windows10;MATLAB R2021b

四、  实验内容

(1)利用 Matlab 命令画出下列连续信号的波形图。

(a)2cos(3t+π/4)

(b)(2-e-t)u(t)

(c)[1+cos(πt)][u(t)−u(t−2)]

(2)利用 Matlab 命令画出复信号f(t)=2ej(t+π/4)的实部、虚部、模和辐角。

五、  实验数据分析及结果

(1.a)源代码为:

%(2) 2cos(3t+pi/4)

clear;clc;

t=0:0.01:3;

gt=2*cos(3*t+pi/4);

plot(t,gt);grid on

axis([-0.5,3.5,-2.5,2.5]);

title('y=2cos(3t+pi/4)');

(1.b)源代码为:

%(1) (2-e^(-t))ε(t)

clear;clc;

t=0:0.01:3;

ft=2-exp(-t);

plot(t,ft);

grid on;

axis([-0.5,3.5,0.75,2.25]);

title('y=(2-exp(-t))ε(t)');

(1.c)源代码为:

clear;clc;

t=-2:0.01:5;

f1=1+cos(pi*t);

f2=(t>=0)-(t>=2);

ft=f1.*f2;

plot(t,ft)

grid on

 

(2)源代码为:

clc;clear;

t=-10:0.001:10;

y=3*exp(j*(t+pi/4));

real(y);

subplot(2,1,1);

plot(t,ans);

xlabel('t');

title('2exp(i(t+\pi/4的实部图');

grid on;

imag(y);

subplot(2,1,2);

plot(t,ans);

xlabel('t');

title('2exp(i(t+\pi/4的虚部图');

grid on;

clc;clear;

t=-10:0.001:10;

y=2*exp(1i*(t+pi/4));

abs(y);

subplot(2,1,1);

plot(t,ans);

xlabel('t');

title('2exp(i(t+\pi/4的模的图');

grid on;

angle(y);

subplot(2,1,2);

plot(t,ans);

xlabel('t');

title('2exp(i(t+\pi/4的虚部图');

grid on;

六、  实验思考

信号的平移、反转和尺度变换是针对自变量时间而言的,其数学表达式和波形变换中存在着一定的变化规律。从数学表达式上来看,信号的上述所有计算都是自变量的替换过程。所以在使用 Matlab 进行连续时间信号的运算时,只需要进行相应的变量代换即可完成相关工作。

2.连续时间信号在 Matlab 中的运算

一、  实验原理

1、信号的时移、反褶和尺度变换

信号的平移、反转和尺度变换是针对自变量时间而言的,其数学表达式和波形变换中存在着一定的变化规律。从数学表达式上来看,信号的上述所有计算都是自变量的替换过程。所以在使用 Matlab 进行连续时间信号的运算时,只需要进行相应的变量代换即可完成相关工作。

2、连续时间信号的微分和积分

符号运算工具箱有强大的积分运算和求导功能。

3、信号的相加和相乘运算

信号的相加和相乘是信号在同一时刻取值的相加和相乘。因此 Matlab 对于时间信号的相加和相乘都是基于向量的点运算。

4、连续信号的卷积运算

卷积积分是信号和系统时域分析的重要方法之一。

二、  实验目的

1、学会运用 Matlab 进行连续时间信号的时移、反褶和尺度变换;

2、学会运用 Matlab 进行连续时间信号微分、积分运算;

3、学会运用 Matlab 进行连续时间信号相加、相乘运算;

4、学会运用 Matlab 进行连续时间信号卷积运算。

三、  实验环境

Windows10;MATLAB R2021b

四、  实验内容

1、已知信号的波形(课本 P11 例题),画出f(t−2),f(3t),f(−t),f(−3t−2)

的波形图。

2、使用微分命令求y=x·sinx·lnx关于变量 x 的一阶导数;使用积分命令计算不定积分ò(x5-ax2+(√x)/2)dx,定积分ò10((xex)/(1+x)2)dx.

3、已知f1(t)=sin(Ωt), f2(t)=sin8Ωt,使用命令画出两信号和及两信号乘积的波形图。其中,f=Ω/2π=1Hz。

五、  实验数据分析及结果

(1)源代码为:

clc;clear;

t=-2:0.01:4;

ft=function(t);

ft1=function(t-2);

ft2=funct1(3*t-2);

ft3=funct1(-3*t-2);

subplot(411)

plot(t,ft);

grid on;

title('f(t)');

axis([-2,4, -0.5, 2]);

subplot(412);

plot (t,funct1(t-2));

grid on;

title('f(t-2)');

axis([-2,4,-0.5,2])

subplot (413)

plot (t, ft2);grid on;

title('f(3t-2)');

axis([-2,4,-0.5, 2]);

subplot (414);

plot(t,ft3);

grid on;

title('f(-3t-2)');

axis([-2,4,-0.5, 2])

(2)源代码为:

clc;clear;

syms x;

y=x*sin(x)*log(x);

dy=diff(y,'x',1)

z=x^5-2*x*x+sqrt(x)/2;

lz=int(z,'x')

w=x*exp(x)/[(1+x)^2];

lw=int(w,'x',0,1)

dy=sin(x)*log(x)+x*cos(x)*log(x)+sin(x);

lz=1/6*x^6-2/3*x^3+1/3*x^(3/2)

lw=1/2*exp(1)-1

t=-2:0.01:2;

y1=sin(2*pi*t);

y2=sin(16*pi*t);

y3=y1.*y2;

plot(t,y1,'r',t,y2,'b',t,y3,'g'),grid on;

axis([-2,2,-2,2]);

xlabel('t'),ylabel('y')

(3)源代码为:

t=-2:0.01:4;

dt=0.01;

f1=(t>=0)-(t>=2);

f2=(t>=0)+(t>=1)-(t>=2);

f=conv(f1,f2)*dt;

n=length(f);tt=(0:n-1)*dt-2;

plot(tt,f),grid on

axis([-4,12,-2,6]);

(4)源代码为:

t=[-1:0.001:8];

f1=(t>0&t<2).*1;

subplot(2,1,1);

plot(t,f1);

f2=(t>0&t<3)+(t>1&t<2);

subplot(2,1,2);

plot(t,f2);

[f1,t1]=conv1(f1,t,f2,t);

tr=t1(t1>=-1&t1<=8);

f=f1(t1>=-1&t1<=8);

subplot(3,1,3);

plot(tr,f);

六、  实验思考

使用 Matlab 进行数据分析可以极大程度的提高效率,但前提是需要对相应的编程代码熟悉。

3.连续时间 LTI 系统的时域分析

一、  实验原理

1、连续时间系统零输入响应和零状态响应的符号求解

连续时间系统可以使用常系数微分方程来描述,其完全响应由零输入响应和零状态响应组成。

2、连续时间系统零状态响应的数值求解

在实际工程中使用较多的是数值求解微分方程。注意,如果微分方程的左端或者右端表达式有缺项,则其向量 a 或者 b 中对应元素应该为零,不能省略不写。

3、连续时间系统冲激响应和阶跃响应的求解

在连续时间 LTI 系统中,冲激响应和阶跃响应是系统特性的描述。在 MATLAB 中,对于冲激响应和阶跃响应的数值求解,可以使用控制工具箱中提供的函数 impulse 和step 来求解。

二、  实验目的

1、学会使用符号法求解连续系统的零输入响应和零状态响应

2、学会使用数值法求解连续系统的零状态响应

3、学会求解连续系统的冲激响应和阶跃响应

三、  实验环境

Windows10;MATLAB R2021b

四、  实验内容

1、已知系统的微分方程和激励信号,使用 MATLAB 命令画出系统的零状态响应和零输入响应(零状态响应分别使用符号法和数值法求解,零输入响应只使用符号法求解)。

y’’+4y’(t)+3y(t)=f(t);f(t)=u(t);

2、已知系统的微分方程,使用 MATLAB 命令画出系统的冲激响应和阶跃响应(数值法)。

y’’(t)+2y’(t)+2y(t)=f’(t)

五、  实验数据分析及结果

(1)源代码为:

eq1='D2y+4*Dy+4*y=Df+3*f'; 

eq2='f=exp(-t)*heaviside(t)';

cond='y(-0.001)=0,Dy(-0.001)=0';

yzs=dsolve(eq1,eq2,cond);

yzs=simplify(yzs.y);

ezplot(yzs,[0,10]);grid on

title('符号法求零状态响应')

yzs;

-(heaviside(t)*(t - 2*exp(t) + 2))/exp(2*t);

eq='D2y+4*Dy+4*y=0';

cond='y(0)=11,Dy(0)=22';

yzi=dsolve(eq,cond);

yzi=simplify(yzi)

ezplot(yzi,[0,10]);grid on     %输出符号法求零输入响应

title('符号法求零输入响应');

yzi;

(11*(4*t + 1))/exp(2*t);

(2)源代码为:

clc;clear;

t=0:0.001:10;

sys=tf([0,1,0],[1,2,2]);         

f1=impulse(sys,t);  

f2=stepfun(t,f1);

subplot(2,1,1)

plot(t,f1),grid;                 

xlabel('t');

ylabel('f1(t)');

title('冲激响应');

subplot(2,1,2)

plot(t,f2),grid;              

xlabel('t');

ylabel('f2(t)');

title('阶跃响应');

六、  实验思考

线性时不变(LTI)系统既满足叠加原理又具有时不变特性,它可以用单位脉冲响应来表示,单位脉冲响应是输入端为单位脉冲序列时的系统输出,一般表示为h(n),即h(n)=T[δ(n)]。LTI系统作为信号分析里最理想化的一种情况,引入 MATLAB 进行分析,可以更加直观体现信号的特征,对数据分析具有重要意义。

4.傅里叶变换(FT)及其性质

一、实验原理

1、傅里叶变换的实现

在前面讨论的周期信号中.当周期T→∞时,周期信号就转化为非周期信号。当周期T→∞时,周期信号的各次谐波幅度及谱线间隔将趋近于无穷小,但频谱的相对形状保持不变。这样,原来由许多谱线组成的周期信号的离散频谱就会连成片,形成非周期信号的连续频谱。为了有效地分析非周期信号的频率特性,我们引入了傅里叶变换分析法。

二、实验目的

1、学会运用Matlab求连续时间信号的傅里叶

2、学会运用Matlab求连续时间信号的频谱图

3、学会运用Matlab分析连续时间信号的傅里叶变换的性质

三、实验环境

Windows10;MATLAB7.1

四、实验内容

1、试用MATLAB命令求下列信号的傅里叶变换,并绘出其幅度谱和相位谱。

    (1)f1(t)=sin2π(t-1)/π(t-1)

(2)f2(t)=[sin(πt)/πt]2

2、试用MATLAB命令求下列信号的傅里叶反变换,并绘出其时域信号图。

    (1)F1(ω)=10/(3+jω)-4/5+jω

(2)F2(t)=e-4ω^2

3、分别利用MATLAB符号运算求解法和数值法求下图所示信号的FT,并画出其频谱图。

4、已知门函数自身卷积为三角波信号,试用Matlab命令验证FT的时域卷积定理。

五、实验数据分析及结果

(1.1)源代码为:

clear;clc;

ft=str2sym('(sin(2*pi)*(t-1))/(pi*(t-1))');

Fw=fourier(ft);

subplot(211)

fplot(abs(Fw)),gridon

title(‘幅度谱')

phase=atan(imag(Fw)/real(Fw));

subplot(212)

fplot(phase),gridon

title('相位谱')

(1.2)源代码为:

t=str2sym(‘((sin(pi*t))/(pi*t))2)

Fw=fourier(ft);

subplot(211)

fplot(abs(Fw));gridon

title(‘幅度谱’)

phase=atan(imag(Fw)/real(Fw);

subplot(212)

fplot(phase);gridon

title(‘相位谱’)

(2.1)源代码为:

t=str2sym(‘t’);

Fw=str2sym(‘10/(3+i*w)-4/(5+i*w)');

ft=ifourier(Fw);

fplot(ft);

gridon;

axis([-13-17]);

(2.2)源代码为:

t=str2sym(‘t’);

Fw=str2sym(‘exp(-4*w^2)’);

ft=ifourier(Fw);

ezplot(ft)

gridon

(3)源代码为:

dt=0.001;

t=-0.5:dt:0.5;

ft=uCT(t+0.5)-uCT(t-0.5);

N=2000;

k=-N:N;

W=2*pi*k/((2*N+1)*dt);

F=dt*ft*exp(-j*t'*W);

plot(W,F);grid on;

axis[-pi pi -1 3]);

xlabel(‘W’),ylabel(‘F(W)’)

title('amplitude spectrum');

(4)源代码为:

将门函数先进行时域卷积运算,再将卷积后的结果做傅里叶变换,程序和结果如下:

clear;clc;

dt=0.01;t=-2:dt:2.5;

f1=uCT(t+0.5)-uCT(t-0.5);

f=conv(fl,f1)*dt;

ft=sym(‘f’);

Fw=fourier(ft)

Fw=2*i*pi*dirac(1,w)

将一个门函数先进行傅里叶变换,再将结果与自身相乘,程序和结果如下:

Clear;clc;

dt=0.0l;t=-2:dt:2.5;f1=uCT(t+0.5)-uCT(t-0.5);

ft=sym(‘f1’);

Fw=fourier(ft);

Fw=Fw*Fw

Fw=-4*pi^2*dirac(1,w)^2

由此来验证傅里叶变换的时域卷积定理

六、实验思考

傅里叶变换作为信号分析的重要手段,可将复杂系统简单化。同时,因MATLAB版本问题,部分函数不支持使用,需要根据提示进行函数更换。在使用老版本进行数据分析时,在参数设置等上会有些许不同,需要根据实际情况进行修改或删除。例如:在MATLAB高一点的版本(如R2018b),是严格区分符号sym和字符串str的,因此需要注意使用str2sym()或者sym2str()转换。

5.连续时间LTI系统的频率特性及频域分析

一、实验原理

连续时间LTI系统的频率特性:一个连续LTI系统的数学模型通常用常系数线性微分方程描述,对两边取傅里叶变换,并根据FT的时域微分性质可得化简得出H(jω)可见H(jω)为两个jω的多项式之比。其中,分母、分子多项式的系数分别为式左边和右边相应项的系数,H(jω)称为系统的系统函数,也称为系统的频率响应特性,简称系统频率响应或频率特性。

MATLAB信号处理工具箱提供的freqs函数可直接计算系统的频率响应的数值解,其语句格式为:H=freqs(b,a,w).

二、实验目的

1、学会运用MATLAB分析连续系统地频率特性

2、学会运用MATLAB进行连续系统的频域分析

三、实验环境

Windows10;MATLAB7.1

四、实验内容

1、试用MATLAB命令求下图所示电路系统的幅频特性和相频特性。已知R=10,L=2H,C=0.1F。

2、已知系统微分方程和激励信号如下,试用MATLAB命令求系统的稳态响应。

(1)y’(t)+1.5y(t)=f’(t),f(t)=cos2t

(2)y’’(t)+2y’(t)+3y(t)=-f’(t)+2f(t),f(t)=3+cos2t+cos5t

五、实验数据分析及结果

(1)源代码为:

clearall;

delta=0.01;

t=-20:delta:20;

w=-20:delta:20;

Hw=freqs([1],[-0.1,0,0.1,-1],w);

absl=abs(Hw);

angl=angle(Hw);

subplot(211);

plot(w,abs1),axis([-20,20,0,1.1]),title(‘H(w)幅频特性’),gridon

subplot(212);

plot(w,ang1),gridon

plot(w,ang1),gridon

(2.1)

num = 1;

den = [1, 1.5];

sys = tf(num, den);

figure(1);

step(sys);

xlabel('Time(sec)');

ylabel('Amplitude');

title('系统的稳态响应');

(2.2)

t=0:0.01:20;

y=exp(-t).*(3/2)-(1/10).*sin(2*t)+(1/50).*sin(5*t);

plot(t,y);

xlabel('时间t');

ylabel('稳态响应y(\infty)');

title('系统稳态响应图像');

六、实验思考

此实验,在操作过程中遇到的最大问题是冲激函数不能调用,之前以为定义了就可以调用,不过是不可以的,只好直接在程序中定义一个冲激函数。

猜你喜欢

转载自blog.csdn.net/2303_77131324/article/details/131472118