数字信号处理实验二_第1页
数字信号处理实验二_第2页
数字信号处理实验二_第3页
数字信号处理实验二_第4页
数字信号处理实验二_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字信号处理实验二频率采样型滤波器 实验报告于斌 电信硕3121305080152015/11/081 实验目的 1. 学习使用频率采样型结构实现 FIR 滤波器,初步熟悉 FIR 滤波器的线性 相位特点。2. 直观体会频率采样型滤波器所具有的“滤波器组”特性,即在并联结构 的每条支路上可以分别得到输入信号的各次谐波。 3. 学习使用周期冲激串检测所实现滤波器的频域响应。 2 实验内容3、 实验记录及分析基于Gui的人机化界面:1)结果如下图:分析:输入信号为,图中采样了两个周期共32个点,最大值为4,周期N=16,时域采样结果正确。2) 对采样信号的第二个周期(n=N,N+1.L-1)进行离

2、散傅里叶变换,画出幅频特性和相频特性图,观察并分析其特点。 结果如图:分析:仅在直流分量、一次、二次谐波处有谱线,后面的谱线是由于共轭对称产生的,由于是对第二个周期加窗得到的频率特性,故幅值应乘以sinc函数带来的增益,主瓣附近的频谱结构为,而主瓣宽度为4/N,故增益为N=16。对直流分量(k=0),幅值为16;对一次谐波(k=1),余弦信号正负各分1/2,故幅值为=16;对二次谐波(k=2),幅值为。3) 结果如图:分析:对H(n)求IDFT得到h(n),然后在h(n)后补足够多的零后做FFT即得到近似的单位圆上的频响H(w),在采样点处H(w)=H(k),由图可看出该滤波器为线性相位低通滤

3、波器,而图中相频曲线为锯齿因为matlab进行了卷绕。4) 编程实现图 1 所示的频率采样型滤波器结构,其中 r =0.999, H(k)取第 3步中的值。为了简化编程,梳状滤波器可以调用 CombFilter.m,谐振器可以 调用Resonator2.m,使用 help CombFilter 和 help Resonator2 查看如何配置参 数。将第 1 步生成的采样信号通过该滤波器,画出输出信号第二个周期的时域波形和频谱,并与第 2 步的频谱进行对比, 观察并分析二者的区别。结果如图:分析:其中原始信号为黑色,通过滤波器后为白色,可以看到滤波后发生了相位的偏移,时域波形幅度有些许衰减,频

4、域看直流分量和一次谐波基本重叠,没有完全重叠是因为梳状滤波器取得r值不为1,这是为了工程上的稳定性考虑,而二次谐波分量幅值减半,这是因为Y(k)=X(k)*H(k),H(2)的幅值为0.5,故滤波后幅值为8。5) 分别画出图 1 中前 4 路谐振器的输出信号第二个周期的时域波形,观察并分析输出信号的特点。 结果如图:分析:信号通过第一路谐振器,k=0,即仅有直流分量,幅度不变;信号通过第二路谐振器,k=1,仅通过一次谐波分量,幅度不变;信号通过第三路谐振器,k=2,仅通过第二次谐波分量,又H(2)处幅值0.5,故信号幅值减半;信号通过第四路谐振器,图中仍有少量信号残留,而理想是没有信号通过,这

5、与谐振器设计不够理想有关。6) 将输入信号换成周期为N 的冲激串,画出输出信号第二个周期的幅频特性,并与第 3 步的滤波器幅频特性进行对比,观察并分析二者的关系。 分析:平滑曲线为系统的幅频特性可以看出由于输入的信号为冲击串,其通过一个系统后输出信号应为系统的单位脉冲响应信号,但这里的系统因为r的取值不是1而与实际滤波器的幅频特性有了一定程度的偏差,当r越接近1时偏差越小。三、思考题 1)在第 2 步的幅频特性中,各次谐波的幅度与相应的时域信号幅度有什么关 系? 答:分析中已经有讨论:由于是对第二个周期加窗得到的频率特性,故幅值应乘以sinc函数带来的增益,主瓣附近的频谱结构为,而主瓣宽度为4

6、/N,故增益为N=16。对直流分量(k=0),幅值为16;对一次谐波(k=1),余弦信号正负各分1/2,故幅值为=16;对二次谐波(k=2),幅值为。2) 实验中为什么要观察第二个周期,如果直接观察第一个周期会怎么样? 答:这是由于梳状滤波器的特性决定的H(z)=1-,故h(n)=(n)-(n-N),又由于信号是因果的,所以至少要在第二个周期开始观察才能得到正确结果。3) 如果取r=0.95,观察会出现什么情况。形成的系统特性将相比理想系统特性有更大的误差,输出信号会有一定程度上的失真。附:matlab原程序:function varargout = exe(varargin)% EXE M-

7、file for exe.fig% EXE, by itself, creates a new EXE or raises the existing% singleton*.% H = EXE returns the handle to a new EXE or the handle to% the existing singleton*.% EXE(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in EXE.M with the given input arguments.% EX

8、E(Property,Value,.) creates a new EXE or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before exe_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to exe_Openin

9、gFcn via varargin.% *See GUI Options on GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES% Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help exe% Last Modified by GUIDE v2.5 26-Oct-2015 20:03:14

10、% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, exe_OpeningFcn, . gui_OutputFcn, exe_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(va

11、rargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before exe is made visible.function exe_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args

12、, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to exe (see VARARGIN)% Choose default command line output for exehandles.output = hObject;% Update

13、 handles structureguidata(hObject, handles);% UIWAIT makes exe wait for user response (see UIRESUME)% uiwait(handles.figure1);% - Outputs from this function are returned to the command line.function varargout = exe_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output ar

14、gs (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout1 = handles.output;% - Executes on button press in pushbutton1.f

15、unction pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s=inline(A*cos(2*pi*k*f0*t+q),A,k,f0,t,q);f0=50;N=16;L=2*N;fs=N*f0;ts=1/fs;

16、ss=zeros(1,L);A=1,2,1;q=0,pi/2,pi;for k=0:1:2 ss=ss+s(A(k+1),k,f0,0:ts:(L-1)*ts,q(k+1);endfigurestem(0:L-1,ss);title(s(n);xlabel(n)ylabel(s(n)% - Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata re

17、served - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s=inline(A*cos(2*pi*k*f0*t+q),A,k,f0,t,q);f0=50;N=16;L=2*N;fs=N*f0;ts=1/fs;ss=zeros(1,L);A=1,2,1;q=0,pi/2,pi;for k=0:1:2 ss=ss+s(A(k+1),k,f0,0:ts:(L-1)*ts,q(k+1);endSk=fft(ss(N:2*N-1);Sk_a

18、bs=abs(Sk);Sk_angle=angle(Sk);figuresubplot(1,2,1)stem(0:N-1,Sk_abs);title(Amplitude);xlabel(k)ylabel(|S(k)|)subplot(1,2,2)stem(0:N-1,Sk_angle/pi);title(Angle);xlabel(k)ylabel(angle(S(k)/pi)% - Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObjec

19、t handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)N=16;H=1,exp(-j*pi*(N-1)/N),0.5*exp(-j*2*pi*(N-1)/N),0.25*exp(-j*3*pi*(N-1)/N),0,0,0,0,0,0,0,0,0,-0.25*exp(-j*13*pi*(N-1)/N),-0.5*exp(-j*14*

20、pi*(N-1)/N),-exp(-j*15*pi*(N-1)/N);h=ifft(H);disp(h(n):);disp(num2str(real(h);figuresubplot(2,2,3)stem(0:N-1,real(h);title(h(n);xlabel(n)ylabel(h(n)h1=h,zeros(1,9*N);H1=fft(h1);subplot(2,2,1)plot(0:10*N-1)*2/(10*N),abs(H1);title(Amplitude);xlabel(w/pi)ylabel(|H(w)|)subplot(2,2,2)plot(0:10*N-1)*2/(10

21、*N),angle(H1)/pi);title(Angle);xlabel(w/pi)ylabel(angle(H(w)/pi)% - Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with h

22、andles and user data (see GUIDATA)r=0.999;s=inline(A*cos(2*pi*k*f0*t+q),A,k,f0,t,q);f0=50;N=16;L=2*N;fs=N*f0;ts=1/fs;ss=zeros(1,L);A=1,2,1;q=0,pi/2,pi;for k=0:1:2 ss=ss+s(A(k+1),k,f0,0:ts:(L-1)*ts,q(k+1);endSk=fft(ss(N:2*N-1);Sk_abs=abs(Sk);Sk_angle=angle(Sk);H=1,exp(-j*pi*(N-1)/N),0.5*exp(-j*2*pi*(

23、N-1)/N),0.25*exp(-j*3*pi*(N-1)/N),0,0,0,0,0,0,0,0,0,-0.25*exp(-j*13*pi*(N-1)/N),-0.5*exp(-j*14*pi*(N-1)/N),-exp(-j*15*pi*(N-1)/N);y1=CombFilter(ss,N,r);y2=zeros(1,N+L);for k=0:N/2 y2=y2+Resonator2(y1,N,r,k,H(k+1);endy=y2/N;figuresubplot(1,3,1)stem(N:L-1,ss(N+1:L),MarkerFaceColor,black);hold onstem(N

24、:L-1,y(N+1:L);hold offtitle(Original signal(black)/After filtering(white);xlabel(n)ylabel(s(n)Yk=fft(y(N+1:L);Yk_abs=abs(Yk);Yk_angle=angle(Yk);subplot(1,3,2)stem(0:N-1,Sk_abs,MarkerFaceColor,black);hold onstem(0:N-1,Yk_abs);hold offtitle(After filtering:Amplitude);xlabel(k)ylabel(|Y(k)|)subplot(1,3

25、,3)stem(0:N-1,Sk_angle/pi,MarkerFaceColor,black);hold onstem(0:N-1,Yk_angle/pi);hold offtitle(After filtering:Angle);xlabel(k)ylabel(angle(H(k)/pi)% - Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventda

26、ta reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)r=0.999;s=inline(A*cos(2*pi*k*f0*t+q),A,k,f0,t,q);f0=50;N=16;L=2*N;fs=N*f0;ts=1/fs;ss=zeros(1,L);A=1,2,1;q=0,pi/2,pi;for k=0:1:2 ss=ss+s(A(k+1),k,f0,0:ts:(L-1)*ts,q(k+1);endH=1,exp(-j

27、*pi*(N-1)/N),0.5*exp(-j*2*pi*(N-1)/N),0.25*exp(-j*3*pi*(N-1)/N),0,0,0,0,0,0,0,0,0,-0.25*exp(-j*13*pi*(N-1)/N),-0.5*exp(-j*14*pi*(N-1)/N),-exp(-j*15*pi*(N-1)/N);y1=CombFilter(ss,N,r);figurefor k=0:3 subplot(2,2,k+1) temp_y1=Resonator2(y1,N,r,k,H(k+1)/N; stem(N:L-1,temp_y1(N+1:L); title(After filtering No.,num2str(k),signal); xlabel(n) ylabel(s,num2str(k),(n)end% - Executes on button press in pushbutton6.functio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论