信号与系统MATLAB实验报告.docx
- 文档编号:25788376
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:38
- 大小:265.45KB
信号与系统MATLAB实验报告.docx
《信号与系统MATLAB实验报告.docx》由会员分享,可在线阅读,更多相关《信号与系统MATLAB实验报告.docx(38页珍藏版)》请在冰豆网上搜索。
信号与系统MATLAB实验报告
《信号与系统》MATLAB实验报告
院系:
专业:
年级:
班号:
姓名:
学号:
实验时间:
实验地点:
实验一连续时间信号的表示及可视化
实验题目:
;
;
(分别取
);
;
;
(分别画出不同周期个数的波形)。
解题分析:
以上各类连续函数,先运用t=t1:
p:
t2的命令定义时间范围向量,然后调用对应的函数,建立f与t的关系,最后调用plot()函数绘制图像,并用axis()函数限制其坐标范围。
实验程序:
(1)
t=-1:
0.01:
3%设定时间变量t的范围及步长
f=dirac(t)%调用冲激函数dirac()
plot(t,f)%用plot函数绘制连续函数
axis([-1,3,-0.5,1.5])%用axis函数规定横纵坐标的范围
(2)
t=-1:
0.01:
3%设定时间变量t的范围及步长
f=heaviside(t)%调用阶跃函数heaviside()
plot(t,f)%用plot函数绘制连续函数
title('f(t)=heaviside(t)')%用title函数设置图形的名称
axis([-1,3,-0.5,1.5])%用axis函数规定横纵坐标的范围
(3)
a=1时:
t=-5:
0.01:
5%设定时间变量t的范围及步长
f=exp(t)%调用指数函数exp()
plot(t,f)%用plot函数绘制连续函数
title('f=exp(t)')%用title函数设置图形的名称
axis([-5,5,-1,100])%用axis函数规定横纵坐标的范围
a=2时:
t=-5:
0.01:
5
f=exp(2*t)%调用指数函数exp()
plot(t,f)
title('f=exp(2*t)')
axis([-5,5,-1,100])
a=-2时:
t=-5:
0.01:
5
f=exp(-2*t)
plot(t,f)
title('f=exp(-2*t)')
axis([-5,5,-1,100])
(4)
t=-5:
0.01:
5
f=rectpuls(t,2)%用rectpuls(t,a)表示门函数,默认以零点为中心,宽度为a
plot(t,f)
title('f=R(t)')
axis([-55-0.51.5])
(5)
ω=1时:
t=-20:
0.01:
20
f=sin(t)./t%调用正弦函数sin(),并用sin(t)./t实现抽样函数
plot(t,f)
title('f(t)=Sa(t)')
axis([-20,-20,-0.5,1.1])
ω=5时:
t=-20:
0.01:
20
f=sin(5*t)./(5*t)
plot(t,f)
title('f(t)=Sa(5*t)')
axis([-20,-20,-0.5,1.1])
(6)
ω=1时:
t=-10:
0.01:
10
f=sin(t)%调用正弦函数sin()
plot(t,f);
title('f=sin(t)')
axis([-10,10,-2,2])
ω=5时:
t=-10:
0.01:
10
f=sin(5*t)
plot(t,f);
title('f=sin(5*t)')
axis([-10,10,-2,2])
实验结果;
(1)
(2)
(3)
a=1时:
a=2时:
a=-2时:
(4)
(5)
ω=1时:
ω=5时:
(6)
ω=1时:
ω=5时:
实验心得体会:
(1)在MATLAB中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。
在
MATLAB中t=t1:
p:
t2的命令定义时间范围向量,t1为信号起始时间,t2为终止时间,p为时间间隔。
(2)plot()函数可用于连续函数的绘制。
(3)用axis()函数限制坐标范围,可使图像更加匀称美观。
改进想法:
本题中函数的表示方法都不只一种。
如阶跃函数可以借助符号函数来实现可视化。
其程序和结果如下:
t=-5:
0.05:
5
f=sign(t)%调用符号函数sign()
axis([-5,5,-1.1,1.1])
ff=1/2+1/2*f%运用阶跃函数与符号函数的关系,表示出阶跃函数ff
plot(t,ff)
axis([-5,5,-0.1,1.1])
实验二离散时间信号的表示及可视化
实验题目:
;
;
(分别取
);
(分别取不同的N值);
;
(分别取不同的
值);
解题分析:
以上各类离散函数,可仿照连续函数的可视化,先运用n=n1:
p:
n2的命令定义自变量的范围及步长,然后调用对应的函数,建立f与t的关系,最后调用stem()函数绘制图像,并用axis()函数限制其坐标范围。
实验程序:
(1)
n=-5:
0.5:
5%设定时间变量n的范围及步长
f=dirac(n)
stem(n,f)%调用stem()绘制离散函数
title('f=dirac(t)')
axis([-5,5,-3,10])%用axis函数规定横纵坐标的范围
(2)
n=-5:
0.5:
5
f=heaviside(n)
stem(n,f)
title('f=Heaviside(t)')
axis([-5,5,-0.5,1.5])
(3)
a=1时:
n=-5:
0.5:
5
f=exp(n)
stem(n,f)
title('f=exp(n)')
a=2时:
n=-5:
0.5:
5
f=exp(2*n)
stem(n,f)
title('f=exp(2*n)')
a=-2时:
n=-5:
0.5:
5
f=exp(-2*n)
stem(n,f)
title('f=exp(-2*n)')
(4)
n=-5:
0.5:
5
f=rectpuls(n,2)
stem(n,f)
title('f=R(n)')
axis([-5,5,-0.5,1.5])
(5)
ω=1时:
n=-20:
0.5:
20
f=sin(n)./(n)
stem(n,f)
title('f=Sa(n)')
axis([-20,-20,-0.5,1.1])
ω=5时:
n=-20:
0.5:
20
f=sin(5*n)./(5*n)
stem(n,f)
title('f=Sa(5*n)')
axis([-20,-20,-1,5])
(6)
ω=1时:
n=-5:
0.5:
5
f=sin(n)
stem(n,f)
title('f=sin(n)')
axis([-5,5,-2,2])
ω=5时:
n=-5:
0.5:
5
f=sin(5*n)
stem(n,f)
title('f=sin(5*n)')
axis([-5,5,-2,2])
实验结果;
(1)
(2)
(3)
a=1时:
a=2时:
a=-2时:
(4)
(5)
ω=1时:
ω=5时:
(6)
ω=1时:
ω=5时:
实验心得体会:
用plot()函数可以绘制离散序列,但是与连续序列有所不同,需要在括号内加上'.'。
但是plot()画出来的函数图像不直观,显得很凌乱。
改进想法:
(1)对于离散函数,如果使用stem(n,f,'.')函数,绘图效果更好。
如抽样函数的程序:
n=-20:
0.5:
20
f=sin(n)./(n)
stem(n,f,'.')
title('f=Sa(n)')
axis([-20,-20,-0.5,1.1])
绘图结果如下:
对比可知此法做出的图像更加清晰美观。
(2)MATLAB可以自动地根据曲线数据的范围选择合适的坐标系,从而使得曲线尽可能清晰地显示出来,一般情况下不必选择坐标系。
但是,如果对MATLAB自动产生的坐标轴不满意,可以利用axis命令对坐标轴进行调整。
实验三系统的时域求解
实验题目:
1.设
,求
,并画出
、
、
波形。
2.求因果线性移不变系统
的单位抽样响应
,并绘出
的幅频及相频特性曲线。
解题分析:
1.用heaviside()和exp()函数表示出x(n)和h(n),然后调用conv()函数实现x(n)和h(n)的卷积y(n)。
并且分别将三个函数图像绘出。
2.通过给矩阵a,b赋值,建立系统差分方程,然后调用impz()函数求系统的冲激响应,再用函数freqs(b,a)进行系统频率响应的分析。
实验程序:
(1)
n=-10:
20%设置变量范围,默认步长为1
f=heaviside(n)
x=heaviside(n)-heaviside(n-10)%阶跃函数直接相减
figure
(1)%产生图像窗口1
stem(n,x)%绘制函数x
title('x(n)')
h=0.9.^n.*f%函数h的表达式
figure
(2)%产生图像窗口2
stem(n,h)%绘制函数h
title('h(n)')
n1=-20:
40
y=conv(h,x)%调用conv()函数求h和x的卷积
figure(3)%产生图像窗口3
stem(y)%绘制函数y
title('y(n)=x(n)*h(n)')
(2)
a=[10-0.81]%描述系统的差分方程的系数
b=[10-1]%描述系统的差分方程的系数
figure
(1)
h=impz(n,m,-10:
10)%调用impz()函数求系统的冲激响应
stem(h)%绘制函数h的离散序列
title('h(n)')
figure
(2)
freqs(b,a)%对连续系统频率响应H(jw)进行分析的函数freqs()
实验结果;
(1)
(2)
实验心得体会:
(1)计算离散序列的卷积时,应考虑其结果的横坐标范围的改变。
(2)向量相乘时,注意用‘.’。
(3)借助MATLAB的内部函数conv()可以很容易地完成两个信号的卷积运算,并且其完成的是两个多项式的乘法运算,在MATLAB中它们的系数构成一个行向量来表示。
(3)表示系统的方法是用系统函数分子和分母多项式系数行向量来表示。
改进想法:
(1)n=-10:
20%设置变量范围,默认步长为1
f=heaviside(n)
x=heaviside(n)-heaviside(n-10)%阶跃函数直接相减
figure
(1)%产生图像窗口1
axis([-10,20,0,1])
stem(n,x)%绘制函数x
title('x(n)')
h=0.9.^n.*f%函数h的表达式
figure
(2)%产生图像窗口2
stem(n,h)%绘制函数h
axis([-10,20,0,1])
title('h(n)')
n1=-20:
40
y=conv(h,x)%调用conv函数求h和x的卷积
figure(3)%产生图像窗口3
stem(y)%绘制函数y
axis([0,62,0,7])
title('y(n)=x(n)*h(n)')
运行结果:
实验四信号的DFT分析
实验题目:
计算余弦序列
的DFT。
分别对N=10、16、22时计算DFT,绘出
幅频特性曲线,分析是否有差别及产生差别的原因。
解题分析:
用矩阵代替门函数给变量n赋值,并设定不同的N值,然后调用fft()函数实现函数的傅里叶变换,然后用subplot()和stem()函数绘图。
实验程序:
(1)N=10时:
N=10%设定N的值为10
n=[0:
N-1]%用矩阵代替门函数给n赋值
x=cos((pi/8).*n)%调用cos()函数
y=fft(x)%调用fft()函数求x的傅里叶变换
subplot(2,1,1),stem(n,y)%绘制y的离散图
title('DFT[cos((pi/8)*n]')
subplot(2,1,2),stem(n,abs(y))%绘制y的幅频特性曲线
title('X(k)')
(2)N=16时:
N=16%设定N的值为16
n=[0:
N-1]%用矩阵代替门函数给n赋值
x=cos((pi/8).*n)%调用cos()函数
y=fft(x)%调用fft()函数求x的傅里叶变换
subplot(2,1,1),stem(n,y)%绘制y的离散图
title('DFT[cos((pi/8)*n]')
subplot(2,1,2),stem(n,abs(y))%绘制y的幅频特性曲线
title('X(k)')
(3)N=22时:
N=22%设定N的值为22
n=[0:
N-1]%用矩阵代替门函数给n赋值
x=cos((pi/8).*n)%调用cos()函数
y=fft(x)%调用fft()函数求x的傅里叶变换
subplot(2,1,1),stem(n,y)%绘制y的离散图
title('DFT[cos((pi/8)*n]')
subplot(2,1,2),stem(n,abs(y))%绘制y的幅频特性曲线
title('X(k)')
实验结果;
(1)N=10时:
(2)N=16时:
(3)N=22时:
实验结果分析:
由图可知,不同的N值所对应的DFT序列和幅频响应不同,是因为N代表DFT的变换区间长度,当N取不同的值时,函数所对应的离散傅里叶变换和幅频特性曲线也不同。
实验心得体会:
MATLAB是计算机运算,无法实现无限时间信号和无限大数量的计算,故而周期信号只能取有限个谐波分量近似合成,即N值有限,且N值越大,仿真结果越接近。
所以手工求取的傅里叶变换系数与MATLAB求取存在差别。
实验五系统时域解的快速卷积求法
实验题目:
用快速卷积法计算系统响应
,已知:
,
。
要求取不同的L点数,并画出
、
、
波形,分析是否有差别及产生差别的原因。
解题分析:
根据离散序列卷积及傅里叶变换的性质,可先求出两函数x(n)和h(n)的L点傅里叶变换,分别得到Xk和Yk,然后求Xk和Yk之积Hk的傅里叶反变换,即得到了x(n)和h(n)的卷积y(n)。
实验程序:
L=10时:
n1=[0:
14]%用矩阵代替门函数给n1赋值
x=sin(0.4.*n1)%写出x的表达式
n2=[0:
19]%给n2赋值
y=0.9.^n2%写出y的表达式
Xk=fft(x,10)%调用fft()函数求x的L(=10)点傅里叶变换
Yk=fft(y,10)%求y的L点傅里叶变换
Hk=Xk.*Yk%写出Hk的表达式
h=ifft(Hk)%调用ifft()函数求Hk的傅里叶反变换
subplot(3,1,1),stem(x)%绘制x的离散图
title('x(n)')
subplot(3,1,2),stem(y)%绘制y的离散图
title('y(n)')
subplot(3,1,3),stem(h)%绘制h的离散图
title('h(n)')
xlabel('L=10')%横坐标处做标注
(2)L=18时:
n1=[0:
14]
x=sin(0.4.*n1)
n2=[0:
19]
y=0.9.^n2
Xk=fft(x,18)
Yk=fft(y,18)
Hk=Xk.*Yk
h=ifft(Hk)
subplot(3,1,1),stem(x)
title('x(n)')
subplot(3,1,2),stem(y)
title('y(n)')
subplot(3,1,3),stem(h)
title('h(n)')
xlabel('L=18')
(3)L=28时:
n1=[0:
14]
x=sin(0.4.*n1)
n2=[0:
19]
y=0.9.^n2
Xk=fft(x,28)
Yk=fft(y,28)
Hk=Xk.*Yk
h=ifft(Hk)
subplot(3,1,1),stem(x)
title('x(n)')
subplot(3,1,2),stem(y)
title('y(n)')
subplot(3,1,3),stem(h)
title('h(n)')
xlabel('L=28')
(4)L=35时:
n1=[0:
14]
x=sin(0.4.*n1)
n2=[0:
19]
y=0.9.^n2
Xk=fft(x,35)
Yk=fft(y,35)
Hk=Xk.*Yk
h=ifft(Hk)
subplot(3,1,1),stem(x)
title('x(n)')
subplot(3,1,2),stem(y)
title('y(n)')
subplot(3,1,3),stem(h)
title('h(n)')
xlabel('L=35')
实验结果;
(1)L=10时:
(2)L=18时:
(3)L=28时:
(4)L=35时:
实验结果分析:
由图可知,当L取不同的值时,对应的y(n)波形形状相似,但是有所不同,产生这种差别的原因是L代表傅里叶变换区间长度,当L取不同的值时,所对应的函数波形也有所差别。
实验心得体会:
(1)计算离散序列的卷积,虽然本实验的快速卷积方法看上去多次变换了变量的域,使过程变复杂了,但实际上减少了计算量,是一种快速而简单的方法。
(2)用subplot绘图函数可将图形窗口分成若干等份,便于将多个图像进行分组或者比较。
改进想法:
当L取不同的值时,matlab自动生成的图像的横纵坐标范围不同,不便于相互比较,因此可以自己规定坐标轴范围,这样可以更加直观地看出各波形间的差别。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 MATLAB 实验 报告