实验报告学院:物理与信息工程学院班级:电子信息工程课程:数字信号处理姓名:胡蝶学号:201432000017实验一线性卷积的时间比较一、实验目的DFT是数字信号分析与处理中的一种重要的变换。但直接计算DFT的计算量与变换区间长度N成正比,当N较大时,计算量太大,故从而引出FFT(快速傅里叶变换)。当我们用CONV函数时,可以了解到两者进行卷积时的时间会不相同,这样我们能更好的了解FFT的特点。二、实验原理将两个序列A和B进行卷积,用CONV函数时,如果向量A和B的长度分别为N和M,则卷积结果向量C的长度为N+M-1;如果A和B为两个多项式的系数,则C为两个多项式的系数。Conv(A,B)即表示两个序列的卷积。而用FFT的方法则是首先将两个序列的N点进行快速傅里叶变换,最后将两个结果再进行IFFT变换即可。三、实验步骤及内容(一)用函数conv和FFT计算长为1000序列的卷积,比较其计算时间。用MATLAB编程如下:clf;%清屏L=5000;%序列的长度N=L*2-1;%线性卷积满足的条件n=1:L;%循环x1=0.5*n;%对序列一的赋值x2=2*n;%对序列二的赋值t0=clock;%计时时间的起点yc=conv(x1,x2);%对X1,X2进行线性卷积,将其结果给yctc=etime(clock,t0)%完成线性卷积所需要的时间t0=clock;%FFT的计时时间起点yf=ifft(fft(x1,N).*fft(x2,N));%对x1,x2进行N点卷积,并对结果进行IFFT运算,并将结果赋值给yftf=etime(clock,t0)%完成FFT卷积所需要的时间n1=0:length(yf)-1;%plot(n1,yc,'r',n1,abs(yf),'b')%画图,‘r’表示图形为红色,‘b’表示图形为蓝色plot(n1,abs(yf),'b')figure;plot(n1,yc,'r')四、实验结果当将上述程序输入至MATLAB中后,即可得到如下图形:(一)(二)图形分析如下:a、红色曲线表示的是用conv函数编写的程序运行出来的结果,即对建立的两个序列X1和X2用conv函数进行卷积既可以得到;b、蓝色曲线表示的是用FFT函数编写程序得到的图形,只需要对序列X1进行N点DFT即能够获得我们所需要的图形显示。c、将两个图形进行比较即可以知道,用两种方法进行卷积计算的结果是相同的,但是所用的时间却不相同,用FFT进行卷积的时间更短。(三)结果分析如下:当更改线性条件为N=L*3-1后,所得如下图形:故只有满足N=L*2-1的条件时,才能进行线性卷积。实验二用FFT对信号作频谱分析一、实验目的我们做此实验的目的是学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便正确应用FFT。二、实验原理用FFT对信号作频谱分析是学习数字信号处理的重要内容,在数字信号处理中,我们经常所要频谱分析的信号是模拟信号和时域离散信号。对信号进行谱分析的重要问题是频谱分析的重要问题是频谱分辨率D和分析误差。·而频谱的分辨率直接和FFT的变换区间N有关。因为FFT能够实现的频率分辨率是2∏/N《D。可以根据此式选择FFT的变换区间N。误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。若是不确定信号的类型,则可以尽量选择信号的观察时间长一些。对与模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。三、实验步骤及内容(一)已知信号x(t)=0.5sin()+2sin(),其中,f1=15Hz,f2=40Hz,采样频率为100Hz,在下列情况下绘制其频谱。%(1)Ndate=32,Nfft=32;%(2)Ndate=32,Nfft=128;%(3)Ndate=136,Nfft=128;%(4)Ndate=136,Nfft=512。用MATLAB编程如下:clf%清屏fs=100;%LengthofDataNdata=32;%采样点的点数%LengthofFFTN=32;n=0:Ndata-1;t=n/fs;x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);%将连续信号进行离散y=fft(x,N);%用FFT对离散序列进行谱分析mag=abs(y);%取y的模长赋给magf=(0:length(y)-1)'*fs/length(y);%建立平面坐标系subplot(2,2,1)%开2行2列的窗口plot(f(1:N/2),mag(1:N/2));xlabel('Frequency(Hz)');%X轴贴标签ylabel('Magnitude');%Y轴贴标签title('Ndata=32Nfft=32')grid(二)(三)图形分析:(1)当Ndate=32,Nfft=32的情况下,图形比较肥胖,而产生这样的原因是因为离散谱线经过截断后,使谱线向附近展宽,从而发生频谱泄露导致的这种现象;(2)当Ndate=32,Nfft=128的情况时,图形中的旁瓣很多,当主谱线两边形成很多旁瓣时,会引起不同频率分量间的干扰,也就是我们常常所说的谱间干扰,这样的图形会是频谱分析产生较大的偏差;(3)当Ndate=136,Nfft=128的情况下,相对于第四个图形来说,幅度明显较小,这样容易导致采样点数变少,从而在频谱分析的过程中丢失频谱信号,而使得频谱分析产生误差;(4)由第四个图形,我们相较于前三个图形来看,没有上述的那些频谱误差,采样点数也比较多,使得实验结果的误差较小且精准。实验三脉冲响应不变法实现IIR的设计一、实验目的(1)熟悉用脉冲响应不变法设计IIR数字滤波器;(2)学会调用MATLAB信号处理工具箱中滤波器设计函数,学会根据滤波需求确定滤波器指标参数。二、实验原理基本设计过程:a、将数字滤波器设计指标转换为相应的模拟滤波器指标;b、设计相应的模拟滤波器,可以得到相应的模拟系统函数Ha(s)c、利用相应的公式将模拟滤波器的系统函数Ha(s)再转换成数字滤波器系统H(z)。三、实验步骤及内容(一)用脉冲响应不变法设计Butterworth低通数字滤波器,要求通带频率为,%通带波纹小于1dB,阻带在内,幅度衰减大于15dB,采用周期。用MATLAB编程如下:%DesignaButterworthdigitallowpassfilter%Desiredperformentsofthefilterwp=0.2*pi;%通带边界频率赋值ws=0.3*pi;%阻带边界频率赋值Rp=1;%通带衰减频率的赋值Rs=15;%阻带衰减频率的赋值Ts=0.01;Nn=128;%描述的点数%ConvertdigitalfrequencytoanalogfrequencyWp=wp/Ts;%将数字频率转换为模拟频率Ws=ws/Ts;%ComputeOderandCutofffrequency[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s')%进行阶次和截止频率的计算%Computetheanalogfilter[z,p,k]=buttap(N);%计算归一化的滤波器[Bap,Aap]=zp2tf(z,p,k);%将零极点的形式转换为有理分式的H(z)[b,a]=lp2lp(Bap,Aap,Wn);%去归一%Impulseinvariancemethod%脉冲响应不变法%foranalogtodigitalfilterconversion.%将模拟信号转化为数字信号[bz,az]=impinvar(b,a,1/Ts)%数字滤波器的有理分式形式[r,p,k]=residuez(bz,az)freqz(bz,az,N,1/Ts)(二)运行后的图形如图所示:实验四用双线性变换法设计IIR一、实验目的(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法;(2)掌握IIR数字滤波器的MATLAB的实现方法;(3)通过观察滤波器输入、输出信号的时域波形及其频谱。二、实验原理设计IIR数字滤波器中,用双线性变化法的基本设计过程:1、将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;2、设计过渡模拟滤波器;3、将过渡模拟器系统函数转换成数字滤波器的系统函数,即求出H(z)三、实验步骤及内容(一)用双线性变换法设计一个Butterworth低通滤波器,要求通带频率为,%通带波纹小于1dB,阻带在内,幅度衰减大于15dB,采样周期0.01秒。用MATLAB编程如下:%DesignaButterworthdigitallowpassfilter%Desiredperformentsofthefilterwp=0.2*pi;%通带边界频率ws=0.3*pi;%阻带边界频率Rp=1;%通带衰减频率Rs=15;%阻带衰减频率Ts=0.01;Nn=128;%描述的点数%ConvertdigitalfrequencytoanalogfrequencyWp=(2/Ts)*tan(wp/2);%将数字频率转化为模拟频率Ws=(2/Ts)*tan(ws/2);%ComputeOderandCutofffrequency[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s')%计算阶次和截止频率%Computetheanalogfilter%计算模拟滤波器[z,p,k]=buttap(N);%计算归一化的滤波器[Bap,Aap]=zp2tf(z,p,k);%将零极点形式转化为有理分式形式[b,a]=lp2lp(Bap,Aap,Wn);%去归一方法%Bilineartransformation%双线性变换法%foranalogtodigitalfilterconversion.%将模拟滤波器转化为数字滤波器[bz,az]=bilinear(b,a,1/Ts)%从而得到数字化的一组向量[r,p,k]=tf2zp(bz,az)freqz(bz,az,Nn,1/Ts)(二)运行的图形实验五FIR数字滤波器设计与软件实现一、实验目的(1)掌握用窗函数法设计FIR数字滤波器的原理与方法;(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理与方法;(3)学会调用MATLAB函数设计与实现FIR滤波器。二、实验原理设计的基本过程:1、首先根据阻带衰减及过渡带的指标要求,选择窗函数的类型,并估计窗口长度N;2、然后再构造希望逼近的频率响应函数;3、计算hd(n);4、加窗得到相应的设计结果。三、实验步骤及内容(一)用窗函数法设计一个线性相位FIR低通滤波器,并满足性能指标;通带边界频率,%阻带边界频率,阻带衰减不小于40dB,通带波纹不大于3dB。由题意,%阻带衰减不小于40dB,选取汉宁窗。用MATLAB编程如下:%MATLABPROGRAM4-13%Window-basedFIRfilterdesign%Perfomentparameterwp=0.5*pi;%对通带边界频率进行赋值ws=0.66*pi;%对阻带边界频率进行赋值%Widthoftransitionband%过渡带的宽度wdelta=ws-wp;%过渡带即为阻带边界频率域通带边界频率之差%LengthofthefilterN=ceil(8*pi/wdelta)%计算窗口长度时,用函数取括号内的最大整数ifrem(N,2)==0%若N/2的余数为0N=N+1;%满足上面条件时,则将偶数变化为奇数end%LengthofthewindowNw=N;%将窗口长度赋值给Nw%CutoffFrequencyofthefilterwc=(wp+ws)/2;%计算截止频率的值%Computeimpulseresponxeofidealfiltern=0:N-1;%进行循环alpha=(