Matlab实验报告学院:信息与通信工程学院班级:201321113学号:2013210381班内序号:18姓名:石雪原实验题目1.实现重叠相加和重叠保留算法一.实验原理重叠相加法和重叠保留法的实质都是以逐段地方式通过循环卷积来完成线性卷积的计算。
将输入序列x(n)进行分段,每段长为N,且N≥M(M为有限长因果序列h(n)的长度),x(n)逐段与h(n)进行循环卷积,在重叠保留法中需在x(n)序列首部加入长度为M-1的0序列。
在算法中,在获得N个点的输入后,进行N+M-1点循环卷积计算,之后输出N个点。
通过for循环逐段进行循环卷积,使用FFT和IFFT计算两个有限长序列的N点循环卷积结果。
二.源代码和流程图重叠相加法代码function [Y]=overpl(x,h,N)Lx=length(x); %序列长度M=length(h); %h(n)长度x=[x,zeros(1,N-1)];t=zeros(1,M-1);Y=zeros(1,Lx+M-1);a=floor(Lx/N);for k=0:aA=x(k*N+1:k*N+N);y1=fft(A,Lx+M-1); %利用fft进行运算y2=fft(h,Lx+M-1);y3=y1.*y2;q=ifft(y3,Lx+M-1);Y(k*N+1:k*N+M-1)=q(1:M-1)+t(1:M-1);Y(k*N+M:k*N+N)=q(M:N);t(1:M-1)=q(N+1:N+M-1);endY(1:Lx+M-1);对应流程图图二图一:每段利用fft和ifft实现循环卷积图二:对x(n)逐段进行循环卷积然后相加得输出线性卷积结果y(n)重叠保留法代码function[Y]=overlpsav(x,h,N)Lx=length(x);M=length(h);M1=M -1;L=N-M1;h=[h,zeros(1,N-M)];x=[zeros(1,M1),x,zeros(1,N-1)];a=floor ((Lx+M1-1)/(L))+1; Y=zeros(1,N);for k=0:a-1xk=x(k*L+1:k*L+N);b=fft(xk,N);C=fft(h,N);Z=b.*C;Y(k+1,:)=ifft(Z,N);endY=Y(:,M:N)';Y=(Y(:))'对应流程图三.实验结果重叠相加法x=[1,2,3] h=[1,2,3] N=4重叠保留法x=[1,2,3,4,5,6,7,8,9,10] h=[1,0,-1] N=4四. 结果分析(有关运算量的定量分析结果)有限长因果序列x (n )h (n )的长度分别为N 和M ,直接计算线性卷积y (n ),y (n )可视为N 个序列的叠加结果,序列长度为M ,所以每生成一个序列需完成M 次乘法,共需完成MN 次乘法运算。
这N 个序列依次向右移动一位故需(N-1)(M-1)次加法运算。
按照FFT 和IFFT 计算线性卷积时,设L=N=M-1,整个运算过程包含了2个FFT 、一个IFFT 和L 此乘法运算,所以,按基2频域抽选算法实现FFT 或IFFT ,共需完成1.5L 次乘法和加法运算。
五. 讨论总结1. N 越大快算法的运算量越小,即实现重叠相加法和重叠保留法的运算量越小。
2. MATLAB 软件使用方法和语言不熟悉,通过查阅书籍网络解决。
实验题目2:周期序列的谱分析实验目的:利用 DFT 分析模拟信号()()cos 16a x t t π=之频谱。
试验内容:1、设定采样周期 T 并说明原因根据奈奎斯特取样条件,fs>=2f=2*8=16Hz ,所以取 fs=20Hz ,T=1/f=0.05s 。
2、若令()cos(16)x n nT π=,确定该序列之周期 N 并说明原因 因为 x(n)=cos(0.8 πn), 2π/0.8π=2.5所以周期 N=5.3、绘制 10个周期内 x(n)的取值情况 T = 1/20; t = 0:T:5-T; N = 5;figure(1);xn = cos(16*pi*t); stem(0:10*N-1, xn(1:10*N));title('10个周期内 x(n)的取值情况 '); ylabel('x(n)'); xlabel('n');4、令x1(n)表示x(n)的主值序列,绘制|DFT(x1(n)|,解释取值情况figure(2);x1n = xn(1:N); stem(0:N-1, x1n);title('x(n)的主值序列'); ylabel('x1(n)'); xlabel('n');figure(3);Xk = fft(x1n, N); stem(0:N-1, abs(Xk));title('|DFT(x1(n))|'); ylabel('X1(k)'); xlabel('k');所得X1(k)取值即为x(n)的5点(一个周期内)DFT结果,为清晰谱线。
5、令x2(n)表示x(n)的任一周期,绘制|DFT(x2(n)|,解释取值情况figure(4);r = 4; x2n = xn(r:r+N-1); stem(0:N-1, x2n);title('x(n)的任一周期'); ylabel('x2(n)'); xlabel('n');figure(5);Xk = fft(x2n, N); stem(0:N-1, abs(Xk));title('|DFT(x2(n))|'); ylabel('X2(k)'); xlabel('k');所得X2(k)取值与x(n)主值序列DFT结果相同。
因为DFT是反映信号的频域特性,所以同为一个周期,频域特性一定相同,无论起始位置如何,其DFT情况都相同。
6、令x3(n)表示x(n)的2个周期,绘制|DFT(x3(n)|,解释取值情况figure(6);x3n = xn(1:2*N); stem(0:2*N-1, x3n);title('x(n)的2个周期'); ylabel('x3(n)'); xlabel('n');figure(7);Xk = fft(x3n, 2*N); stem(0:2*N-1, abs(Xk));title('|DFT(x3(n))|'); ylabel('X3(k)'); xlabel('k');因为选取了2个周期,所以DFT点数是X1(k)的2倍。
因为取的周期的整数倍,所以可以得到清晰谱线。
所得X3(k)是在x(n)主值序列DFT结果的基础上插入取值为零的点,将点数提高至10,仍为清晰谱线。
7、若x4(n)=x(n)×RM(n),而M不是x(n)周期的整数倍,绘制|DFT(x4(n)|,解释取值情况figure(8);M = 8; x4n = xn(1:M); stem(0:M-1, x4n);title('x(n)*R8(n)'); ylabel('x4(n)'); xlabel('n');figure(9);Xk = fft(x4n, M); stem(0:M-1, abs(Xk));title('|DFT(x4(n))|'); ylabel('X4(k)'); xlabel('k');所得X4(k)是非周期整数倍点数的DFT,不是清晰谱线。
因为选取了1.3个周期,不是周期的整数倍,选取的x4(n)没有体现出x(n)的周期特性,所以得到的谱线的形状特征必然与X1(k)、X2(k)、X3(k)不同。
实验题目3:梳状滤波器的应用实验目的:录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。
试验内容:1、对试验原理的说明回声可以认为是由原始声音衰减后的多个延迟叠加组成的,因此回声可以用延迟单元来生成。
x(n)表示原始声音信号,a 为衰减系数,T 为延迟周期,回声信号Y(n)=X(n)+a*x(n-T)+a^2*x(n-2T)+……+a^k*x(n-kT)。
Z 变换后的系统函数H(z)可由梳状滤波器实现。
本实验用MATLAB 中的filter(b,a,x)函数可用来仿真差分方程a(1)*y(n)=b(1)*x(n)+b(2)*x(n1)+...+b(nb+1)*x(n-nb)-a(2)*y(n-1)-...-a(na+1)*y(n-na)。
2、在同一张图上,绘制原声音序列x(n)、加入一次反射后的声音序列x1(n)、加入三次反射后的声音序列x3(n)和加入无穷多次反射后的声音序列xI(n)。
[x, fs] = wavread('843.wav');% sound(x, fs);a = 0.6; T = 0.6;y1 = filter([1, zeros(1,T*fs-1), a], 1, x);% sound(y1, fs); wavwrite(y1, fs, 'echo1.wav'); y2 = filter([1, zeros(1,T*fs-1), a, zeros(1,T*fs-1), a^2, zeros(1,T*fs-1), a^3],1, x);% sound(y2, fs); wavwrite(y2, fs, 'echo2.wav'); y3 = filter(1, [1, zeros(1,T*fs-1), a], x);% sound(y3, fs); wavwrite(y3, fs, 'echo3.wav'); plot(y3, 'm');hold on; plot(y2, 'r');hold on; plot(y1, 'g');hold on; plot(x, 'b');a=0.6;T=0.2a=0.3;T=0.2a=0.9;T=0.2a=0.6;T=0.6a=0.6;T=1.0在这里我使用了一段名叫“843。
WAV”的短音频,得到上图,其中蓝色为原声音序列x(n),粉红色为加入一次反射后的声音序列x1(n),绿色为加入三次反射后的声音序列x3(n),红色为加入无穷多次反射后的声音序列xI(n)。