MATLAB信号与系统实验报告19472
时间:2021-10-02 来源:博通范文网 本文已影响 人
信号与系统实验陈诉(5)
MATLAB 综合实验 项目二
连续系统的频域阐发 目的:
周期信号输入连续系统的响应可用傅里叶级数阐发。由于盘算历程啰嗦,最适适用MATLAB 盘算。通过编程实现对输入信号、输出信号的频谱和时域响应的盘算,认识盘算机在系统阐发中的作用。
任务:
线性连续系统的系统函数为11) (jj H ,输入信号为周期矩形波如图 1 所示,用MATLAB 阐发系统的输入频谱、输出频谱以及系统的时域响应。
-3 -2 -1 0 1 2 300.511.52Time(sec)
图 1
要领:
1、确定周期信号 f(t)的频谱nF。基波频率 Ω。
2、确定系统函数 ) ( jn H 。
3、盘算输出信号的频谱
n nF jn H Y ) (
4、系统的时域响应
nt jnn eY t y) (
MATLAB 盘算为
y=Y_n*exp(j*w0*n"*t);
要求(画出 3 幅图):
1、在一幅图中画输入信号 f(t)和输入信号幅度频谱|F(j)|。用两个子图画出。
2、画出系统函数的幅度频谱|H(j)|。
3、在一幅图中画输出信号 y(t)和输出信号幅度频谱|Y(j)|。用两个子图画出。
解: (1) 阐发盘算:
输入信号的频谱为
(n ) 输入信号最小周期为 =2,脉冲宽度 ,基波频率Ω=2π/ =π,
所以
(n ) 系统函数为
因此
输出信号的频谱为
系统响应为
(2) 步伐:
t=linspace(-3,3,300);
tau_T=1/4;
%
n0=-20;n1=20;
n=n0:n1;
%盘算谐波次数20
F_n=tau_T*Sa(tau_T*pi*n);
f=2*(rectpuls(t+1.75,0.5)+rectpuls(t-0.25,0.5)+rectpuls(t-2.25,0.5));
figure(1),subplot(2,1,1),line(t,f,"linewidth",2);
%输入信号的波形 axis([-3,3,-0.1,2.1]);grid on
xlabel("Time(sec)","fontsize",8),title("输入信号","fontweight","bold") %设定字体巨细,文本字符的粗细
text(-0.4,0.8,"f(t)")
subplot(2,1,2),stem(n,abs(F_n),".");
%输入信号的幅度频谱 xlabel("n","fontsize",8),title("输入信号的幅度频谱","fontweight","bold")
text(-4.0,0.2,"|Fn|")
H_n=1./(i*n*pi+1);
figure(2),stem(n,abs(H_n),".");
%系统函数的幅度频谱 xlabel("n","fontsize",8),title("系统函数的幅度频谱","fontweight","bold")
text(-2.5,0.5,"|Hn|")
Y_n=H_n.*F_n; y=Y_n*exp(i*pi*n"*t);
figure(3),subplot(2,1,1),line(t,y,"linewidth",2);
%输出信号的波形 axis([-3,3,0,0.5]);grid on
xlabel("Time(sec)","fontsize",8),title("输出信号","fontweight","bold")
text(-0.4,0.3,"y(t)")
subplot(2,1,2),stem(n,abs(Y_n),".");
%输出信号的幅度频谱 xlabel("n","fontsize",8),title("输出信号的幅度频谱","fontweight","bold")
text(-4.0,0.2,"|Yn|")
(3) 波形:
-3 -2 -1 0 1 2 300.511.52Time(sec)输 入 信 号f(t)-20 -15 -10 -5 0 5 10 15 2000.10.20.30.4n输 入 信 号 的 幅 度 频 谱|Fn|-20 -15 -10 -5 0 5 10 15 2000.10.20.30.40.50.60.70.80.91n系 统 函 数 的 幅 度 频 谱|Hn|
-3 -2 -1 0 1 2 300.10.20.30.4Time(sec)输 出 信 号y(t)-20 -15 -10 -5 0 5 10 15 2000.10.20.30.4n输 出 信 号 的 幅 度 频 谱|Yn|
项目三
连续系统的复频域阐发 目的:
周期信号输入连续系统的响应也可用拉氏变更阐发。用 MATLAB 的标记盘算成果,通过编程实现对系统瞬态响应和稳态响应的阐发,加深理解拉氏变更在阐发系统中的作用。
任务:
线性连续系统的系统函数为11) (ss H ,输入信号为周期矩形波如图2所示,用MATLAB阐发系统的响应和稳态响应。
0 1 2 3 4 5 6 700.511.52Time(sec)
图 2
要领:
1、确定第一个周期拉氏变更 ) (0s F 。
2、确定前 6 个周期的拉氏变更 ) (s F 。
3、盘算输出信号的拉氏变更
) ( ) ( ) ( s F s H s Y
4、系统的时域响应
) ( ) ( s Y t y
MATLAB 盘算为
y=ilaplace(Y); 5、系统的稳态响应和稳态值,即经过 4 个周期后,系统响应趋于稳态,两个稳态值可取为
t=8s 和 t=8.5s
要求:
1、画出输入信号 f(t)波形。
2、画出系统输出信号 y(t)的波形。
3、画出系统稳态响应 yss(t)的波形,4 个周期后。并盘算出稳态值。
解: (1)步伐 syms s;
H=1/(s+1);
F0=1/s*(1-exp(-0.5*s));
%输入信号第一个周期的laplace变更
F=F0+F0*exp(-2*s)+F0*exp(-4*s)+F0*exp(-6*s);
Y=H.*F;
Y0=H.*F0;
y=ilaplace(Y);
y=simple(y);
t=linspace(0,12,300);
f=2*(rectpuls(t-0.25,0.5)+rectpuls(t-2.25,0.5)+rectpuls(t-4.25,0.5)+rectpuls(t-6.25,0.5));
yn=subs(y);
%标记替换
figure(1),plot(t,f,"linewidth",2);
axis([0,7,-0.2,2.2]),xlabel("Time(sec)","fontsize",8),title("输入信号","fontweight","bold")
text(3.0,1.0,"f(t)")
figure(2),plot(t,yn,"linewidth",2);
axis([0,7,-0.1,0.5]),xlabel("Time(sec)","fontsize",8),title("输出信号","fontweight","bold")
text(3.0,0.3,"y(t)")
figure(3),plot(t,yn,"linewidth",2);
axis([8,12,-0.1,0.5]),xlabel("Time(sec)","fontsize",8),title("输出信号稳态响应","fontweight","bold")
text(10.0,0.2,"ys(t)")
t=8:0.5:8.5;
%取t=8s和t=8.5两个稳态值
ys=subs(y,t,"t");
disp("输入为周期信号的响应的第一个周期");
y0=ilaplace(Y0);
pretty(y0);
%标记输出类似数值形式
disp("输出稳态周期信号的两个值");
ys
(2)波形
0 1 2 3 4 5 6 700.511.52Time( s ec )输 入 信 号f(t)
0 1 2 3 4 5 6 7-0.100.10.20.30.4Time(sec)输 出 信 号y(t) 8 8.5 9 9.5 10 10.5 11 11.5 12-0.100.10.20.30.4Time(sec)输 出 信 号 稳 态 响 应ys(t)
命令窗口显示:
输入为周期信号的响应的第一个周期
heaviside(t - 1/2) (exp(1/2 - t) - 1) - exp(-t) + 1 输出稳态周期信号的两个值 ys =
0.1015
0.0616
感觉非常棒的范文。
要是多几篇这么认真的好范文就好了。
院系:
年级:
姓名:
实验时间:
实验地点:
MATLAB实验报告
专业:
班号:
学号:
1
《信号与系统》
实验一 连续时间信号的表示及可视化
实验题目:
f(t)(t);f(t)(t);f(t)eat(分别取a0及a0); f(t)R(t);f(t)Sa(t);f(t)Sin(2ft)(分别画出不同周期个数的波形)。
解题分析:
以上各类连续函数,先运用t = t1: p:t2的命令定义时间范围向量,然后调用对应的函数,建立f与t的关系,最后调用plot()函数绘制图像,并用axis()函数限制其坐标范围。
实验程序:
(1)f(t)(t)
t=-1:0.01:3 %设定时间变量t的范围及步长 f=dirac(t) %调用冲激函数dirac() plot(t,f) %用plot函数绘制连续函数 axis([-1,3,-0.5,1.5]) %用axis函数规定横纵坐标的范围 (2)f(t)(t)
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)f(t)eat
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)f(t)R(t)
t=-5:0.01:5 f=rectpuls(t,2) %用rectpuls(t,a)表示门函数,默认以零点为中心,宽度为a plot(t,f) title(\\"f=R(t)\\") axis([-5 5 -0.5 1.5]) (5)f(t)Sa(t)
ω=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]) 3
ω=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)f(t)Sin(2ft)
ω=1时: t=-10:0.01:10 f=sin(t) %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)
调用正弦函数sin() 4
1.510.50-0.5-1-0.500.511.522.532)
f(t)=heaviside(t)1.510.50-0.5-1-0.500.511.522.533)
5 ((
a=1时:
f=exp(t)1009080706050403020100-5-4-3-2-1012345a=2时:
f=exp(2*t)1009080706050403020100-5-4-3-2-1012345
a=-2时:
f=exp(-2*t)1009080706050403020100-5-4-3-2-1012345(4)
f=R(t)1.510.50-0.5-5-4-3-2-1012345
(5) ω=1时:
f(t)=Sa(t)10.80.60.40.20-0.2-0.4-20-15-10-505101520ω=5时:
f(t)=Sa(5*t)10.80.60.40.20-0.2-0.4-20-15-10-505101520(6) ω=1时:
f=sin(t)21.510.50-0.5-1-1.5-2-10-8-6-4-20246810
ω=5时:
f=sin(5*t)21.510.50-0.5-1-1.5-2-10-8-6-4-20246810
实验心得体会: (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])
f=heaviside(t)10.80.60.40.20-5-4-3-2-1012345
实验二 离散时间信号的表示及可视化
实验题目:
f(n)(n);f(n)(n);f(n)ean(分别取a0及a0);
f(n)RN(n)(分别取不同的N值);f(n)Sa(n); f(n)Sin(n)(分别取不同的值);
解题分析:
以上各类离散函数,可仿照连续函数的可视化,先运用n =n1: p: n2的命令定义自变量的范围及步长,然后调用对应的函数,建立f与t的关系,最后调用stem()函数绘制图像,并用axis()函数限制其坐标范围。
实验程序:
(1)f(n)(n)
n=-5:0.5:5 %设定时间变量n的范围及步长 f=dirac(n) stem(n,f) %调用stem()绘制离散函数 title(\\"f=dirac(t)\\") axis([-5,5,-3,10]) %用axis函数规定横纵坐标的范围 (2)f(n)(n)
n=-5:0.5:5 f=heaviside(n) stem(n,f) title(\\"f=Heaviside(t)\\") axis([-5,5,-0.5,1.5]) (3)f(n)ean
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)f(n)RN(n)
n=-5:0.5:5 f=rectpuls(n,2) stem(n,f) title(\\"f=R(n)\\") axis([-5,5,-0.5,1.5]) (5)f(n)Sa(n)
ω=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) 13
stem(n,f) title(\\"f=Sa(5*n)\\") axis([-20,-20,-1,5]) (6)f(n)Sin(n)
ω=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)
f=dirac(t)1086420-2-5-4-3-2-10123452)
f=Heaviside(t)1.510.50-0.5-5-4-3-2-10123453)
15 ((
a=1时:
f=exp(n)150100500-5-4-3-2-1012345a=2时:
2.5x 104f=exp(2*n)21.510.50-5-4-3-2-1012345
a=-2时:
4f=exp(-2*n)2.5x 1021.510.50-5-4-3-2-1012345(4)
f=R(n)1.510.50-0.5-5-4-3-2-1012345
(5) ω=1时:
f=Sa(n)10.80.60.40.20-0.2-0.4-20-15-10-505101520ω=5时:
f=Sa(5*n)0.250.20.150.10.050-0.05-0.1-0.15-0.2-20-15-10-505101520(6) ω=1时:
f=sin(n)21.510.50-0.5-1-1.5-2-5-4-3-2-1012345
ω=5时:
f=sin(5*n)21.510.50-0.5-1-1.5-2-5-4-3-2-1012345
实验心得体会: 用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]) 绘图结果如下:
f=Sa(n)10.80.60.40.20-0.2-0.4-20-15-10-505101520
对比可知此法做出的图像更加清晰美观。
(2)MATLAB 可以自动地根据曲线数据的范围选择合适的坐标系,从而使得曲线尽可能清晰地显示出来,一般情况下不必选择坐标系。但是,如果对 MATLAB自动产生的坐标轴不满意,可以利用 axis 命令对坐标轴进行调整。
21
实验三 系统的时域求解
实验题目:
1.设h(n)(0.9)nu(n),x(n)u(n)u(n10),求y(n)x(n)*h(n),并画出x(n)、h(n)、y(n)波形。
y(n)0.81y(n2)x(n)x(n2)的单位
j2.求因果线性移不变系统抽样响应h(n),并绘出H(e)的幅频及相频特性曲线。
解题分析:
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的卷积
22
figure(3) %产生图像窗口3 stem(y) %绘制函数y title(\\"y(n)=x(n)*h(n)\\") (2)
a=[1 0 -0.81] %描述系统的差分方程的系数 b=[1 0 -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)
x(n)10.90.80.70.60.50.40.30.20.10-10-505101520
23
h(n)0.90.80.70.60.50.40.30.20.10-10-505101520y(n)=x(n)*h(n)65432100102030405060702)
24
( h(n)1.210.80.60.40.20-0.20510152025
100.09udeti100.05agnM100.0110-210-1100101Frequency (rad/s)1)s0.5reeeg(d0e hasP-0.5-110-210-1100101Frequency (rad/s)
实验心得体会:
25
(1)计算离散序列的卷积时,应考虑其结果的横坐标范围的改变。 (2)向量相乘时,注意用‘ .’。
(3)借助MATLAB的内部函数conv()可以很容易地完成两个信号的卷积运算,并且其完成的是两个多项式的乘法运算,在MATLAB中它们的系数构成一个行向量来表示。
(3)表示系统的方法是用系统函数分子和分母多项式系数行向量来表示。
改进想法:
(1)n=-10:20 %f=heaviside(n) x=heaviside(n)-heaviside(n-10) %figure(1) %axis([-10,20,0,1]) stem(n,x) %title(\\"x(n)\\") h=0.9.^n.*f %figure(2) %stem(n,h) %axis([-10,20,0,1]) title(\\"h(n)\\") n1=-20:40 y=conv(h,x) %figure(3) %stem(y) %axis([0,62,0,7]) title(\\"y(n)=x(n)*h(n)\\")
运行结果:
设置变量范围,默认步长为1
阶跃函数直接相减 产生图像窗口1 绘制函数x 函数h的表达式 产生图像窗口2 绘制函数h 调用conv函数求h和x的卷积 产生图像窗口3 绘制函数y 26
x(n)10.90.80.70.60.50.40.30.20.10-10-505101520h(n)10.90.80.70.60.50.40.30.20.10-10-505101520
27
y(n)=x(n)*h(n)765432100102030405060
28
实验四 信号的DFT分析
实验题目:
计算余弦序列x(n)cos(8n)RN(n)的DFT。分别对N=
10、
16、22时计算DFT,绘出X(k)幅频特性曲线,分析是否有差别及产生差别的原因。
解题分析:
用矩阵代替门函数给变量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的幅频特性曲线
29
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时:
DFT[cos((pi/8)*n]3210-10123456789X(k)64200123456789(2)N=16时:
30
DFT[cos((pi/8)*n]1050-5051015X(k)864200510153)N=22时:
DFT[cos((pi/8)*n]6420-20510152025X(k)1050051015202531 (
实验结果分析:
由图可知,不同的N值所对应的DFT序列和幅频响应不同,是因为N代表DFT的变换区间长度,当N取不同的值时,函数所对应的离散傅里叶变换和幅频特性曲线也不同。
实验心得体会: MATLAB是计算机运算,无法实现无限时间信号和无限大数量的计算,故而周期信号只能取有限个谐波分量近似合成,即N值有限,且N值越大,仿真结果越接近。所以手工求取的傅里叶变换系数与MATLAB求取存在差别。
32
实验五 系统时域解的快速卷积求法
实验题目:
用快速卷积法计算系统响应
y(n)x(n)*h(n),已知:
x(n)sin(0.4n)R15(n),h(n)0.9nR20(n)。要求取不同的L点数,并画出x(n)、h(n)、y(n)波形,分析是否有差别及产生差别的原因。
解题分析:
根据离散序列卷积及傅里叶变换的性质,可先求出两函数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\\") %横坐标处做标注
33
(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)\\") 34
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时:
35
x(n)10-1051015y(n)10.5002468101214161820h(n)42012345678910L=102)L=18时:
x(n)10-1051015y(n)10.5002468101214161820h(n)50-5024681012141618L=183)L=28时:
36 ((
x(n)10-1051015y(n)10.5002468101214161820h(n)50-5051015202530L=284)L=35时:
x(n)10-1051015y(n)10.5002468101214161820h(n)50-505101520253035L=35
37 (
实验结果分析:
由图可知,当L取不同的值时,对应的y(n)波形形状相似,但是有所不同,产生这种差别的原因是L代表傅里叶变换区间长度,当L取不同的值时,所对应的函数波形也有所差别。
实验心得体会: (1)计算离散序列的卷积,虽然本实验的快速卷积方法看上去多次变换了变量的域,使过程变复杂了,但实际上减少了计算量,是一种快速而简单的方法。 (2)用subplot绘图函数可将图形窗口分成若干等份,便于将多个图像进行分组或者比较。
改进想法:
当L取不同的值时,matlab自动生成的图像的横纵坐标范围不同,不便于相互比较,因此可以自己规定坐标轴范围,这样可以更加直观地看出各波形间的差别。
38