利用窗函数法设计低通滤波器

合集下载

MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序

MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序

MATLAB窗函数法实现FIR的高通,带通和低通滤波器的程序MATLAB 学院:地球物理与石油资源学院班级:姓名:学号:班内编号:指导教师:完成日期:测井11001大牛啊啊啊陈义群2013年6月3日课程设计报告一、题目FIR滤波器的窗函数设计法及性能比较 1. FIR滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应滤波器和有限冲激响应滤波器。

与IIR滤波器相比,FIR滤波器的主要特点为: a. 线性相位;b.非递归运算。

2. FIR 滤波器的设计FIR滤波器的设计方法主要有三种:a.窗函数设计法;b.频率抽样发;c.最小平法抽样法;这里我主要讨论在MATLAB环境下通过调用信号分析与处理工具箱的几类窗函数来设计滤波器并分析与比较其性能。

窗函数法设计FIR滤波器的一般步骤如下: a. 根据实际问题确定要设计的滤波器类型; b. 根据给定的技术指标,确定期望滤波器的理想频率特性;c. 求期望滤波器的单位脉冲响应;d. 求数字滤波器的单位脉冲响应; e. 应用。

常用的窗函数有(1)Hanningwindoww(n)?[?((2)Hammingw indoww(n)?[?((3)Balckmanwindoww(n)?[ ?((4)KaiserwindowI0{?1?[2n/(N?1)]2}w(n )?RN(n)I0(?)式中I0(x)是零阶Bessel函数,可定义为()2?n4?n)?()]RN(n)N?1N?1()2?n)]RN(n)N ?1() ?nN?1)]RN(n)() (x/2)m2I0(x)?1??m!m?1? 当x?0时与矩形窗一致;当x?时与海明窗结果相同;当x?时与布莱克曼窗结果相同。

3.窗函数的选择标准 1. 较低的旁瓣幅度,尤其是第一旁瓣; 2. 旁瓣幅度要下降得快,以利于增加阻带衰减;3. 主瓣宽度要窄,这样滤波器过渡带较窄。

窗函数法设计FIR滤波器

窗函数法设计FIR滤波器

FIR 数字滤波器的设计方法IIR 数字滤波器最大缺点:不易做成线性相位,而现代图像、语声、数据通信对线性相位的要求是普遍的。

正是此原因,使得具有线性相位的FIR 数字滤波器得到大力发展和广泛应用。

1. 线性相位FIR 数字滤波器的特点FIR DF 的系统函数无分母,为∑∑-=--=-==11)()(N n n N i ii z n h zb z H ,系统频率响应可写成:∑-=-=10)()(N n jwn jwe n h e H ,令)(jw e H =)()(w j e w H Φ,H(w)称为幅度函数,)(w Φ称为相位函数。

这与模和幅角的表示法有所不同,H(w)为可正可负的实数,这是为了表达上的方便。

如某系统频率响应)(jw e H =wj we34sin -,如果采用模和幅角的表示法,w 4sin 的变号相当于在相位上加上)1(ππj e =-因,从而造成相位曲线的不连贯和表达不方便,而用)()(w j e w H Φ这种方式则连贯而方便。

线性相位的FIR 滤波器是指其相位函数)(w Φ满足线性方程:)(w Φ=βα+-w (βα,是常数)根据群时延的定义,式中α表示系统群时延,β表示附加相移。

线性相位的FIR 系统都具有恒群时延特性,因为α为常数,但只有β=0的FIR 系统采具有恒相时延特性。

问题:并非所有的FIR 系统都是线性相位的,只有当它满足一定条件时才具有线性相位。

那么应满足什么样的条件?从例题入手。

例题:令h(n)为FIR 数字滤波器的单位抽样相应。

N n n ≥<或0时h(n)=0,并假设h(n)为实数。

(a ) 这个滤波器的频率响应可表示为)()()(w j jwew H e H Φ=(这是按幅度函数和相位函数来表示的,不是用模和相角的形式),)(w H 为实数。

(N 要分奇偶来讨论) (1) 当h(n)满足条件)1()(n N h n h --=时,求)(w H 和)(w Φ(π≤≤w 0) (2) 当h(n)满足条件)1()(n N h n h ---=时,求)(w H 和)(w Φ(π≤≤w 0)(b ) 用)(k H 表示h(n)的N 点DFT(1) 若h(n)满足)1()(n N h n h ---=,证明H(0)=0; (2) 若N 为偶数,证明当)1()(n N h n h --=时,H(N/2)=0。

利用kaiser窗设计低通滤波器程序

利用kaiser窗设计低通滤波器程序

%--------------------------------------------------------------------------%利用kaiser窗设计低通滤波器m文件%默认输入参数:N=64% beta=5.568% wc=0.5pi%输出参数:通带边界(wp)% 阻带边界(ws)% 通带波纹% 阻带衰减%--------------------------------------------------------------------------function varargout = lpfilter(varargin)% LPFILTER M-file for lpfilter.fig% LPFILTER, by itself, creates a new LPFILTER or raises the existing% singleton*.%% H = LPFIL TER returns the handle to a new LPFILTER or the handle to% the existing singleton*.%% LPFILTER('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in LPFILTER.M with the given input arguments. %% LPFILTER('Property','V alue',...) creates a new LPFIL TER or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before lpfilter_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to lpfilter_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".%% See also: GUIDE, GUIDA TA, GUIHANDLES% Edit the above text to modify the response to help lpfilter% Last Modified by GUIDE v2.5 29-Jun-2007 13:21:40% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @lpfilter_OpeningFcn, ...'gui_OutputFcn', @lpfilter_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin & isstr(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before lpfilter is made visible.function lpfilter_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MA TLAB % handles structure with handles and user data (see GUIDA TA) % varargin command line arguments to lpfilter (see V ARARGIN)% Choose default command line output for lpfilterhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes lpfilter wait for user response (see UIRESUME)% uiwait(handles.figure1);%--------------------------------------------------------------------------%设置滤波器长度,beta和截止频率编辑框的初始值%设置窗体的标题set(handles.figure1,'name','FIR低通滤波器');set(handles.edit_N,'string','64');set(handles.edit_beta,'string','5.568');set(handles.edit_fc,'string','0.5');%--------------------------------------------------------------------------%由设置的初始值求取滤波器的理想单位脉冲响应handles.wc=0.5*pi;handles.M=64;handles.hd=ideal_lp(handles.wc,handles.M);%--------------------------------------------------------------------------%绘制滤波器的理想单位脉冲响应axes(handles.axes_hd);n=[0:1:handles.M-1];plot(n,handles.hd); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%55title('滤波器理想脉冲响应');axis([0 handles.M-1 min(handles.hd) max(handles.hd)+0.01]);xlabel('n');ylabel('hd(n)');grid on;guidata(hObject,handles);% --- Executes on button press in plot.function plot_Callback(hObject, eventdata, handles)% hObject handle to plot (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)%--------------------------------------------------------------------------%从编辑框获取滤波器长度,beta和截止频率的值handles.M = str2double(get(handles.edit_N,'String'));handles.beta = str2double(get(handles.edit_beta,'String'));handles.wc = str2double(get(handles.edit_fc,'String'))*pi;%求取滤波器的理想单位脉冲响应handles.hd=ideal_lp(handles.wc,handles.M);%绘制滤波器的理想单位脉冲响应axes(handles.axes_hd);plot(0,0);n=[0:1:handles.M-1];plot(n,handles.hd);title('滤波器理想脉冲响应');axis([0 handles.M-1 min(handles.hd) max(handles.hd)]);xlabel('n');ylabel('hd(n)');grid on;%--------------------------------------------------------------------------%求取kaiser窗函数handles.w_kai=(kaiser(handles.M,handles.beta))';%绘制kaiser窗函数axes(handles.axes_wkaiser);plot(n,handles.w_kai);title('kaiser窗');axis([0 handles.M-1 min(handles.w_kai) max(handles.w_kai)]);xlabel('n');ylabel('w(n)');grid on;%--------------------------------------------------------------------------%求取滤波器的实际单位脉冲响应handles.h=handles.hd.*handles.w_kai;%绘制滤波器的实际单位脉冲响应axes(handles.axes_h);plot(n,handles.h);title('滤波器实际脉冲响应');axis([0 handles.M-1 min(handles.h) max(handles.h)]);xlabel('n');ylabel('h(n)');grid on;%--------------------------------------------------------------------------%求取滤波器的频率特性,并绘制幅频特性(转换到0—pi)[H,w] = freqz(handles.h,[1],handles.M*6,'whole');% freqz(handles.h,[1],handles.M*6);H=(H(1:1:handles.M*3))';w=(w(1:1:handles.M*3))';mag=abs(H);db=20*log10((mag+eps)/max(mag));% pha=angle(H);%绘制幅频特性(转换到0—pi)axes(handles.axes_lp);plot(w/pi,db);title('FIR滤波器的幅频特性(0-pi)');axis([0 1 min(db) max(db)]);xlabel('Frequency in pi units');ylabel('Decibels');grid on;guidata(hObject,handles);%--------------------------------------------------------------------------%由求得幅频特性计算通带边界,阻带边界,通带纹波和阻带衰减%由beta值计算阻带衰减Asif handles.beta<4.5513As=fzero(@myfun,20,[],handles.beta)+21;elseAs=handles.beta/0.1102+8.7;end%计算通带边界wp,阻带边界wsw_w=(As-7.95)/((handles.M-1)*14.36)*2;ws=0.5*(w_w+2*handles.wc/pi);wp=0.5*(2*handles.wc/pi-w_w);% mag=(mag+eps)/max(mag);%计算通带纹波rp% deta_w=2*pi/(handles.M*6);% w_temp=mag(floor(ws/deta_w));% mag_temp=abs(mag(1:floor(ws/deta_w))-w_temp);rp=20*log10(max(mag));%--------------------------------------------------------------------------%在相应的编辑框中显示通带边界,阻带边界,通带纹波和阻带衰减str=sprintf('%.2f',wp);set(handles.edit_wp,'string',str);str=sprintf('%.2f',ws);set(handles.edit_ws,'string',str);str=sprintf('%.4f',rp);set(handles.edit_rp,'string',str);str=sprintf('%.2f',-As);set(handles.edit_As,'string',str);%--------------------------------------------------------------------------%退出程序function exit_Callback(hObject, eventdata, handles)% hObject handle to exit (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA) close(handles.figure1);%--------------------------------------------------------------------------%自定义函数,计算理想低通滤波器的单位脉冲响应function hd=ideal_lp(wc,M);alpha=(M-1)/2;n = [0:1:(M-1)];m=n-alpha+eps;hd=sin(wc*m)./(pi*m);% --- Outputs from this function are returned to the command line. function varargout = lpfilter_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see V ARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes during object creation, after setting all properties. function edit_N_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_N (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction edit_N_Callback(hObject, eventdata, handles)% hObject handle to edit_N (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit_N as text% str2double(get(hObject,'String')) returns contents of edit_N as a double% --- Executes during object creation, after setting all properties.function edit_beta_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_beta (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction edit_beta_Callback(hObject, eventdata, handles)% hObject handle to edit_beta (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit_beta as text% str2double(get(hObject,'String')) returns contents of edit_beta as a double% --- Executes during object creation, after setting all properties.function edit_fc_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_fc (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction edit_fc_Callback(hObject, eventdata, handles)% hObject handle to edit_fc (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit_fc as text% str2double(get(hObject,'String')) returns contents of edit_fc as a double% --- Executes during object creation, after setting all properties.function edit_ws_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_ws (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction edit_ws_Callback(hObject, eventdata, handles)% hObject handle to edit_ws (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit_ws as text% str2double(get(hObject,'String')) returns contents of edit_ws as a double% --- Executes during object creation, after setting all properties.function edit_wp_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_wp (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction edit_wp_Callback(hObject, eventdata, handles)% hObject handle to edit_wp (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit_wp as text% str2double(get(hObject,'String')) returns contents of edit_wp as a double% --- Executes during object creation, after setting all properties.function edit_rp_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_rp (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction edit_rp_Callback(hObject, eventdata, handles)% hObject handle to edit_rp (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit_rp as text% str2double(get(hObject,'String')) returns contents of edit_rp as a double% --- Executes during object creation, after setting all properties.function edit_As_CreateFcn(hObject, eventdata, handles)% hObject handle to edit_As (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); endfunction edit_As_Callback(hObject, eventdata, handles)% hObject handle to edit_As (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Hints: get(hObject,'String') returns contents of edit_As as text% str2double(get(hObject,'String')) returns contents of edit_As as a double% --- Executes on button press in lp_radiobutton.function lp_radiobutton_Callback(hObject, eventdata, handles)% hObject handle to lp_radiobutton (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDA TA)% Hint: get(hObject,'V alue') returns toggle state of lp_radiobutton% --- Executes on button press in hp_lradiobutton.function hp_lradiobutton_Callback(hObject, eventdata, handles)% hObject handle to hp_lradiobutton (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB % handles structure with handles and user data (see GUIDA TA)% Hint: get(hObject,'V alue') returns toggle state of hp_lradiobutton close(handles.figure1);hpfilter% --- Executes on button press in bp_lradiobutton.function bp_lradiobutton_Callback(hObject, eventdata, handles)% hObject handle to bp_lradiobutton (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB % handles structure with handles and user data (see GUIDA TA)% Hint: get(hObject,'V alue') returns toggle state of bp_lradiobutton close(handles.figure1);bpfilter% --- Executes on button press in bb_lradiobutton.function bb_lradiobutton_Callback(hObject, eventdata, handles)% hObject handle to bb_lradiobutton (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB % handles structure with handles and user data (see GUIDA TA)% Hint: get(hObject,'V alue') returns toggle state of bb_lradiobuttonclose(handles.figure1);bbfilter。

FIR数字低通滤波器的(汉宁)窗函数法设计

FIR数字低通滤波器的(汉宁)窗函数法设计

)(9cos 15.0)(12cos 15.0)(1919n R n n R N n n w ⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-=⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛--=ππ2.3进行语音信号的采集(1)按“开始”-“程序”-“附件”-“娱乐”-“录音机”的顺序操作打开Window s系统中的录音机软件。

如图1所示。

图1 wi ndows 录音机(2)用麦克风录入自己的声音信号并保存成wav 文件。

如图2所示。

图2 保存文件保存的文件按照要求如下:① 音信号文件保存的文件名为“y uxueji ao.wav ”。

②语音信号的属性为“8.000KH z,8位,单声道 7KB /秒” ,其它选项为默认。

2.4语音信号的分析将“yu xuejiao .wav ”语音文件复制到计算机装有Ma tlab 软件的磁盘中相应Mat lab目录中的“work ”文件夹中。

打开Matlab 软件,在菜单栏中选择“File ”-图3语音信号的截取处理图在图3中,其中第一个图为原始语音信号;第二个图是截短后的信号图。

图4频谱分析图其中第二个图是信号的FFT 结果,其横坐标的具体值是X (k)中的序号k;第三个图是确定滤波频率范围的参考图,其横坐标的具体值应当是遵循DFT 定义式和频率分辨率求得的:∑-===10)()]([)(N n k N W n x n x DFT k X π当k等于0时, 020j kn Njk knNe eW ==⋅-=π,从数字角频率上看,对应的正好是0=ω即直流的位置,也就是说,在取滤波频段时,当将主要能量(即红色框的部分)保留,其余频段部分的信号滤除。

)]([)(n x DFT k X =相当于是信号)(n x 的实际频谱)]([)(n x DFT ej X w =采样,而)(n x 又是连续时间语音信号)(t x 的采样。

)(k X 的每两个相邻取值之间的频率间隔大小对应到语音信号)(n x 的频谱中去,其频率间隔大小正好是采样结果的长度采样速率===∆L f f f s det f ∆称频率分辨率,其中Hz f s 8000=,10000=L ,p2=sum(s2.^2)-sum(s1.^2);SNR1=10*log10(p1/p2);p3=sum(s4.^2)/8000;p4=sum(s3.^2)/8000-sum(s4.^2)/8000;SNR2=10*log10(p3/p4);2.6 噪声叠加图5 语音信号与加噪声后语音信号对比图五为语音信号与加噪声后语音信号对。

Matlab中的多种滤波器设计方法介绍

Matlab中的多种滤波器设计方法介绍

Matlab中的多种滤波器设计方法介绍引言滤波器是数字信号处理中常用的工具,它可以去除噪声、改善信号质量以及实现其他信号处理功能。

在Matlab中,有许多不同的滤波器设计方法可供选择。

本文将介绍一些常见的滤波器设计方法,并详细说明它们的原理和应用场景。

一、FIR滤波器设计1.1 理想低通滤波器设计理想低通滤波器是一种理论上的滤波器,它可以完全去除截止频率之上的频率分量。

在Matlab中,可以使用函数fir1来设计理想低通滤波器。

该函数需要指定滤波器阶数及截止频率,并返回滤波器的系数。

但是,由于理想低通滤波器是非因果、无限长的,因此在实际应用中很少使用。

1.2 窗函数法设计为了解决理想滤波器的限制,窗函数法设计了一种有限长、因果的线性相位FIR滤波器。

该方法利用窗函数对理想滤波器的频率响应进行加权,从而得到实际可用的滤波器。

在Matlab中,可以使用函数fir1来实现窗函数法设计。

1.3 Parks-McClellan算法设计Parks-McClellan算法是一种优化设计方法,它可以根据指定的频率响应要求,自动选择最优的滤波器系数。

在Matlab中,可以使用函数firpm来实现Parks-McClellan算法。

二、IIR滤波器设计2.1 Butterworth滤波器设计Butterworth滤波器是一种常用的IIR滤波器,它具有平坦的幅频响应,并且在通带和阻带之间有宽的过渡带。

在Matlab中,可以使用函数butter来设计Butterworth滤波器。

2.2 Chebyshev滤波器设计Chebyshev滤波器是一种具有较陡的滚降率的IIR滤波器,它在通带和阻带之间有一个相对较小的过渡带。

在Matlab中,可以使用函数cheby1和cheby2来设计Chebyshev滤波器。

2.3 Elliptic滤波器设计Elliptic滤波器是一种在通带和阻带上均具有较陡的滚降率的IIR滤波器,它相较于Chebyshev滤波器在通带和阻带上都具有更好的过渡特性。

实验六用窗函数法设计FIR滤波器分析解析

实验六用窗函数法设计FIR滤波器分析解析

实验六用窗函数法设计FIR滤波器分析解析一、引言数字滤波器是数字信号处理中的重要组成部分。

滤波器可以用于去除噪声、调整频率响应以及提取感兴趣的信号。

有许多方法可以设计数字滤波器,包括窗函数法、频域法和优化法等。

本实验将重点介绍窗函数法设计FIR滤波器的原理和过程。

二、窗函数法设计FIR滤波器窗函数法是设计FIR滤波器的一种常用方法。

其基本原理是将滤波器的频率响应与理想滤波器的频率响应进行乘积。

理想滤波器的频率响应通常为矩形函数,而窗函数则用于提取有限长度的理想滤波器的频率响应。

窗函数的选择在FIR滤波器的设计中起着重要的作用。

常用的窗函数包括矩形窗、汉宁窗、汉明窗、布莱克曼窗等。

对于每种窗函数,都有不同的特性和性能指标,如主瓣宽度、副瓣抑制比等。

根据不同的应用需求,可以选择合适的窗函数。

窗函数法设计FIR滤波器的具体步骤如下:1.确定滤波器的阶数N。

阶数N决定了滤波器的复杂度,一般情况下,阶数越低,滤波器的简单度越高,但频率响应的近似程度也会降低。

2.确定滤波器的截止频率。

根据应用需求,确定滤波器的截止频率,并选择合适的窗函数。

3.根据窗函数长度和截止频率计算理想滤波器的频率响应。

根据所选窗函数的特性,计算理想滤波器的频率响应。

4.根据理想滤波器的频率响应和窗函数的频率响应,得到所需的FIR滤波器的频率响应。

将理想滤波器的频率响应与窗函数的频率响应进行乘积,即可得到所需滤波器的频率响应。

5.对所得到的频率响应进行逆傅里叶变换,得到时域的滤波器系数。

6.实现滤波器。

利用所得到的滤波器系数,可以通过卷积运算实现滤波器。

三、实验结果与分析本实验以Matlab软件为平台,利用窗函数法设计了一个低通滤波器。

滤波器的阶数为16,截止频率为500Hz,采样频率为1000Hz,选择了汉宁窗。

根据上述步骤,计算得到了所需的滤波器的频率响应和时域的滤波器系数。

利用这些系数,通过卷积运算,实现了滤波器。

为了验证滤波器的性能,将滤波器应用于输入信号,观察输出信号的变化。

基于汉明窗函数的FIR低通滤波器设计及性能分析

基于汉明窗函数的FIR低通滤波器设计及性能分析

基于汉明窗函数的FIR低通滤波器设计及性能分析FIR低通滤波器是一种常用的数字滤波器,用于处理数字信号中频率较低的成分,将高频成分滤除。

在设计FIR低通滤波器时,常使用汉明窗函数来实现。

本文将介绍基于汉明窗函数的FIR低通滤波器的设计方法和性能分析。

首先,要设计一个FIR低通滤波器,需要确定以下几个参数:滤波器阶数N、采样频率fs、截止频率fc和窗函数类型。

本文将以汉明窗函数为例,演示如何设计FIR低通滤波器。

1. 滤波器阶数N的确定:滤波器阶数N决定了滤波器的复杂度和性能。

一般来说,阶数越高,滤波器的性能越好,但计算复杂度也相应增加。

因此,需要在滤波器性能和计算复杂度之间做出平衡。

常用的方法是根据滤波器的截止频率和采样频率来确定阶数N。

一般可以使用公式N=4fs/fc来初步估计阶数N,然后根据实际需求进行调整。

2. 窗函数的选择:本文选择汉明窗函数作为设计FIR低通滤波器的窗函数。

汉明窗函数在频域上具有较好的副瓣抑制性能,适合用于低通滤波器设计。

3. 窗函数的定义:汉明窗函数的表达式为:w(n) = 0.54 - 0.46*c os(2πn/(N-1)), 0 ≤ n ≤ N-1其中,N为窗函数的长度,n为窗函数的离散时间索引。

4. FIR低通滤波器的设计:设计FIR低通滤波器的步骤如下:1)确定滤波器阶数N;2)选择截止频率fc;3)计算滤波器系数h(n);4)对滤波器系数h(n)进行归一化处理。

5. 滤波器系数的计算:滤波器系数h(n)的计算公式为:h(n) = wc/pi * sinc(wc*(n-(N-1)/2)/pi)其中,wc为归一化的截止频率,wc=2πfc/fs。

sinc(x)为正弦函数sin(x)/x。

6. 归一化处理:对滤波器系数h(n)进行归一化处理,即将系数乘以汉明窗函数的值。

即:hn(n) = h(n) * w(n),0 ≤ n ≤ N-17. 性能分析:设计完毕后,需要进行性能分析来评估滤波器的性能。

用窗函数法设计FIR数字低通滤波器资料

用窗函数法设计FIR数字低通滤波器资料

河北科技大学课程设计报告学生姓名:学号:专业班级:课程名称:学年学期指导教师:20 年月课程设计成绩评定表目录1. 窗函数设计低通滤波器1.1设计目的 (1)1.2设计原理推导与计算 (1)1.3设计内容与要求 (2)1.4设计源程序与运行结果 (3)1.5思考题 (10)1.6心得体会 (14)参考文献 (15)1.窗函数设计低通滤波器1.1设计目的1. 熟悉设计线性相位数字滤波器的一般步骤。

2. 掌握用窗函数法设计FIR 数字滤波器的原理和方法。

3. 熟悉各种窗函数的作用以及各种窗函数对滤波器特性的影响。

4. 学会根据指标要求选择合适的窗函数。

1.2设计原理推导与计算如果所希望的滤波器的理想的频率响应函数为()ωj d e H ,则其对应的单位脉冲响应为()()ωπωωππd e e H n h j j d d ⎰-=21(4.1) 窗函数设计法的基本原理是设计设计低通FIR 数字滤波器时,一般以理想低通滤波特性为逼近函数()ωj e H ,即()⎪⎩⎪⎨⎧≤<≤=-πωωωωωαωc c j jd ,,ee H 0,其中21-=N α()()()[]()a n a n d e e d e eH n h c j j j j d d cc--===⎰⎰---πωωπωπωαωωωαωππωsin 2121用有限长单位脉冲响应序列()n h 逼近()n h d 。

由于()n h d 往往是无限长序列,而且是非因果的,所以用窗函数()n ω将()n h d 截断,并进行加权处理,得到: ()()()n n h n h d ω= (4.2)()n h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数()ωj e H 为()()nj N n j en h eH ωω∑-==1(4.3)式中,N 为所选窗函数()n ω的长度。

用窗函数法设计的滤波器性能取决于窗函数()n ω的类型及窗口长度N 的取值。

用窗函数法设计FIR数字低通滤波器要点

用窗函数法设计FIR数字低通滤波器要点

河北科技大学课程设计报告学生姓名: 学号:专业班级:课程名称:学年学期指导教师:20年月课程设计成绩评定表目录1. 窗函数设计低通滤波器1.1设计目的 (1)1.2设计原理推导与计算 (1)1.3设计内容与要求 (2)1.4设计源程序与运行结果 (3)1.5思考题……………………………………………………………………101.6心得体会 (14)参考文献……………………………………………………………………… 151.窗函数设计低通滤波器1.1设计目的1. 熟悉设计线性相位数字滤波器的一般步骤。

2. 掌握用窗函数法设计FIR 数字滤波器的原理和方法。

3. 熟悉各种窗函数的作用以及各种窗函数对滤波器特性的影响。

4. 学会根据指标要求选择合适的窗函数。

1.2设计原理推导与计算如果所希望的滤波器的理想的频率响应函数为()ωj d e H ,则其对应的单位脉冲响应为()()ωπωωππd e e H n h j j d d ⎰-=21 (4.1)窗函数设计法的基本原理是设计设计低通FIR 数字滤波器时,一般以理想低通滤波特性为逼近函数()ωj e H ,即()⎪⎩⎪⎨⎧≤<≤=-πωωωωωαωc c j jd ,,e e H 0,其中21-=N α()()()[]()a n a n d e e d e eH n h c j j j j d d cc--===⎰⎰---πωωπωπωαωωωαωππωsin 2121用有限长单位脉冲响应序列()n h 逼近()n h d 。

由于()n h d 往往是无限长序列,而且是非因果的,所以用窗函数()n ω将()n h d 截断,并进行加权处理,得到:()()()n n h n h d ω=(4.2)()n h 就作为实际设计的FI R数字滤波器的单位脉冲响应序列,其频率响应函数()ωj e H 为()()nj N n j en h eH ωω∑-==1ﻩ ﻩ(4.3)式中,N 为所选窗函数()n ω的长度。

窗函数法设计fir滤波器步骤

窗函数法设计fir滤波器步骤

窗函数法设计fir滤波器步骤
设计FIR滤波器的窗函数法步骤如下:
1. 确定滤波器的理想频率响应:根据滤波器的要求和设计目标,确定滤波器的理想频率响应。

例如,低通滤波器的理想频率响应为在截止频率以下通过全部信号,而在截止频率以上完全阻断信号。

2. 确定滤波器的截止频率:根据滤波器的要求,确定滤波器的截止频率,即理想频率响应中的-3dB截止点。

3. 计算滤波器的长度:根据滤波器的设计要求和所选窗函数的性能,计算滤波器的长度。

滤波器的长度通常与截止频率、过渡带宽和窗函数的主瓣宽度相关。

4. 选择合适的窗函数:根据滤波器的设计要求和性能需求,选择合适的窗函数。

常用的窗函数有矩形窗、汉宁窗、汉明窗、布莱克曼窗等。

5. 生成滤波器的理想冲激响应:根据滤波器的理想频率响应和截止频率,生成滤波器的理想冲激响应。

可以使用理想低通滤波器或频域采样方法生成。

6. 应用窗函数:将生成的理想冲激响应与所选的窗函数进行乘积,得到窗函数法设计的FIR滤波器的冲激响应。

7. 可选的调整和优化:根据需要,对生成的滤波器进行进一步的调整和优化,以满足特定的性能需求。

例如,可以通过改变窗函数的参数或使用多个窗函数的组合来调整主瓣宽度、副瓣抑制等。

8. 可选的滤波器实现:将得到的滤波器冲激响应进行频域或时域的变换,得到FIR滤波器的差分方程或频域表达式,然后进行滤波器的实现。

9. 滤波器性能评估:对设计的滤波器进行性能评估,包括频率响应、幅频特性、相位响应、群延迟等。

10. 如有需要,对滤波器的设计进行调整和优化,直至满足设计要求。

实验六用窗函数设计FIR滤波器

实验六用窗函数设计FIR滤波器

实验六用窗函数设计FIR滤波器一、引言数字滤波器是用于处理数字信号的重要工具,而FIR(Finite Impulse Response)滤波器是其中一类常见的滤波器。

在FIR滤波器中,输出信号的每个样本值仅依赖于输入信号在过去固定时间窗口内的样本值。

窗函数则是用于设计FIR滤波器的一种常见方法。

本实验将介绍如何用窗函数设计FIR滤波器,并通过一系列实验验证其性能。

二、实验目的1.了解FIR滤波器的原理和窗函数设计方法。

2.利用MATLAB工具进行FIR滤波器设计与性能评估。

3.分析不同窗函数对FIR滤波器的影响。

三、窗函数设计方法在设计FIR滤波器时,可以通过选择不同的窗函数来实现不同的频率响应。

常见的窗函数有矩形窗、汉宁窗、汉明窗、布莱克曼窗等。

在本实验中,我们将以汉宁窗为例进行讲解。

1.首先确定滤波器的截止频率和通带误差。

2.根据通带误差和滤波器的截止频率计算阶数。

3.根据阶数选择合适大小的窗口长度。

4.选择合适的窗函数,如汉宁窗。

5.计算窗函数的系数,并与理想滤波器的冲击响应相乘得到最终的滤波器系数。

四、实验步骤1.确定滤波器参数:截止频率、通带误差等。

2.根据通带误差和截止频率计算滤波器的阶数。

3.选择合适大小的窗口长度,通常选择大于滤波器阶数的2倍。

4.选择窗函数,如汉宁窗,计算窗函数的系数。

5.根据窗函数系数和截止频率计算滤波器的系数。

6.绘制滤波器的频率响应曲线。

7.利用设计好的FIR滤波器对输入信号进行滤波,并观察滤波效果。

五、实验结果与分析在本实验中,我们选择了截止频率为1kHz的低通滤波器。

首先计算滤波器的阶数,假设通带误差为0.01,根据公式可得N=3.32/((截止频率*通带误差)/采样频率)≈60。

我们选择窗口长度为120,即滤波器的阶数的两倍。

接下来选择汉宁窗作为窗函数,并计算其系数。

最后通过窗函数系数和截止频率计算得到滤波器的系数。

实验采用不同窗函数设计的FIR滤波器进行滤波,观察不同窗函数对滤波器性能的影响。

用窗函数法设计FIR滤波器

用窗函数法设计FIR滤波器
具体步骤如下:
1.用窗函数法设计一线性相位FIR低通滤波器,要求通带截止频率 ,
(1)选择一个合适的窗函数(如hamming窗),取单位冲击响应h(n)的长度N=15,观察所设计滤波器的幅频特性,分析是否满足设计要求;
(2)取N=45,重复上述设计,观察幅频和相频特性的变化,分析长度N变化的影响;
(3)保持N=45不变,改变窗函数(如hamming窗变为blackman窗),观察并记录窗函数对滤波器幅频特性的影响。
xlabel('n');ylabel('h(n)');
title('hamming窗设计的h(n)'2);
hw=fft(hn,512);
w=2*[0:511]/512;
plot(w,20*log10(abs(hw)));
xlabel('w/pi');ylabel('Magnitude(dB)');
(4)由 ,得出单位脉冲响应 ;
(5)对 作离散时间傅立叶变换,得到 。
2.在MATLAB中,可以用b=fir1(N,Wn,’ftype’,taper)等函数辅助设计FIR数字滤波器。N代表滤波器阶数;Wn代表滤波器的截止频率(归一化频率),当设计带通和带阻滤波器时,Wn为双元素相量;ftype代表滤波器类型,如’high’高通,’stop’带阻等;taper为窗函数,默认为海明窗,窗函数实现需要用窗函数blackman,hamming,hanningchebwin,kaiser产生。
用窗函数法设计FIR滤波器是在时域进行的,先用傅里叶变换求出理想滤波器单位抽样相应hd(n),然后加时间窗w(n)对其进行截断,以求得FIR 滤波器的单位抽样响应h(n)。

窗函数设计滤波器

窗函数设计滤波器

******************实践教学*******************XXXX大学计算机与通信学院2014年春季学期《信号处理》课程设计题目:窗函数法设计FIR低通滤波器专业班级:姓名:学号:指导教师:成绩:摘要在数字信号处理中.数字滤波器十分重要并已获得广泛应用,效字滤渡器与模拟滤渡器比较,具有精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配以及实现模拟滤波器无法宴现的特殊滤波功能等优点.使数字滤波器成为信号处理领域的一十要研究课题。

本课程设计主要是对一段语音信号,加入噪声后,用汉宁窗设计出的FIR滤波器对加入噪声后的语音信号进行滤波去噪处理。

在此次课程设计中,系统操作平台为Windows 7,程序设计的操作软件MATLAB 7.0。

此课程设计首先是用音乐软件采集一段语音信号,加入噪声,然后采用汉宁窗函数法设计出FIR滤波器,再用设计出的滤波器对这段加噪后的语音信号进行滤波去噪,最后对前后时域和频域的波形图进行对比分析,从波形可以看出噪声被完全滤除,达到了语音不失真的效果。

关键字滤波器 ;汉宁窗 ;去噪III目录前言 (1)第一章设计介绍 (2)1.2 MATLAB在DSP中的运用 (2)1.3 FIR数学滤波器介绍 (2)1.4 窗函数法 (3)1.5 汉宁窗 (5)第二章基本原理 (5)2.1 汉宁窗基本原理 (6)2.2 窗函数法设计基本原理 (6)第三章设计实现框图 (8)第四章基于MATLAB的仿真程序及结果 (9)4.1 读入语音数据并画出其时域与频域图 (9)4.2 在MATLAB中对信号加入两个噪声 (9)4.3 滤波器设计基本程序: (10)参考文献: (15)附录:程序源代码 (16)致谢 (19)前言在当今数字信号处理中,滤波器十分重要并以获得广泛应用,它是去除信号中噪声的基本手段,因此,滤波运算时信号处理中的基本运算。

滤波器设计问题也是数字信号处理中的基本问题。

低通滤波器设计

低通滤波器设计

低通滤波器1. 要设计一个FIR滤波器就是要求出它的冲击响应系数h(n),设计方法主要有窗函数法和频率抽样法。

本设计采用窗函数法,这也是最基本的方法。

理想的低通滤波器的频率响应Hd(ω)是一个矩形,这意味着它在时域上是无限长的序列,这在实际上是不可能实现的。

因此要采用某种方法截断Hd(n),可以用一个有限长度的窗函数序列ω(n)与之相乘。

这个窗函数序列的形状和长度都会对最后系统的频率响应特性产生影响,因此对窗函数的分析和选择是设计FIR 滤波器的关键问题所在。

为了对信号进行滤波,首先必须根据技术指标设计一个数字滤波器,即求单位冲激响应h(n)。

先设计一个FIR低通滤波器,其技术指标为:通带截止频率为1500Hz,阻带截止频率为2 000Hz,通带纹波为0. 01,阻带纹波为0. 1,采样频率为8 000Hz。

FIR滤波器的设计,可以采用MATLAB的数字信号处理软件包所提供的专用函数方便地来设计,直接求取FIR滤波器系数。

在MATLAB中,采用Kaiser窗函数设计低通FIR滤波器。

针对上述的设计要求,采用上面介绍的Kaiser窗函数法进行设计,代入相应的参数,求得FIR滤波器阶数N=37,其各滤波系数如下所示。

h(0)=h(36)= ﹣0. 0010 h(1)=h(35)=﹣0. 0036h(2)=h(34)=0. 0000 h(3)=h(33)=0. 0065h(4)=h(32)=0. 0032 h(5)=h(31)=﹣0. 0088h(6)=h(30)=﹣0. 0093 h(7)=h(29)=0. 0090h(8)=h(28)=0. 0184 h(9)=h(27)=﹣0. 0047h(10)=h(26)=﹣0. 0279 h(11)=h(25)=﹣0. 0071h(12)=h(24)=0. 0417 h(13)=h(23)=0. 0316h(14)=h(22)=﹣0. 0524 h(15)=h(21)=﹣0. 0848h(16)=h(20)=0. 0598 h(17)=h(19)=0.3208h(18)=0. 4375由于TMS320C54x是16位定点处理器,在进行汇编程序设计时,FIR滤波器系数需要采用Q15格式,即必须将上述系数转化为Q15定点格式。

利用窗函数法设计低通滤波器

利用窗函数法设计低通滤波器
p
Ap
:通带截止频率,s :阻带下限截止频率,
As 阻带允许的最小衰减 通带允许的最大衰减,
选择一个适当的窗函数,确定单位冲激响应 ,绘出所设计的滤 波器的幅度响应
分别选择海明窗、布莱克曼窗、汉宁窗设计上述FIR数字低通滤 波器
1、海明窗/布莱克曼窗/汉宁窗
海明窗MATLAB代码:
clear all; Wp=0.15*pi;Ws=0.3*pi; trw=Ws-Wp; N=ceil(6.6*pi/trw)+1 Wc=(Ws+Wp)/2; n=0:1:N-1; hd=id_A(Wc,N); 应 w_ham=(hamming(N))'; h=hd.*w_ham; [db,mag,pha,w]=freqzB(h,[1]); delta_w=2*pi/1000; Ap=-(min(db(1:1:Wp/delta_w+1))) As=-round(max(db(Ws/delta_w+1:1:501))) subplot(2,2,1);stem(n,hd);
xlabel('(b)海明窗w(n)');
subplot(2,2,3);stem(n,h); xlabel('(c)实际单位脉冲响应hd(d)'); subplot(2,2,4);plot(w/pi,db); xlabel('(d)幅度响应(dB)'); axis([0 1 -100 10]);
注:布莱克曼窗和汉宁窗的程序代码只需将海明窗的函数名、精确过渡
,则称之
为IIR系统,而如果单位取样响应是时宽有限的h(n),n1<n<n2, 则称为FIR系统
三、窗函数法设计FIR数字滤波器
窗函数法是设计FIR数字滤波器的最简单法。它在 设计FIR数字滤波器中有很重要的作用,正确地选择窗

MATLAB窗函数法实现FIR的高通-带通和低通滤波器的程序要点

MATLAB窗函数法实现FIR的高通-带通和低通滤波器的程序要点

MATLAB课程设计报告学院:地球物理与石油资源学院班级: 测井(基)11001姓名:大牛啊啊啊学号:班内编号:指导教师: 陈义群完成日期: 2013年6月3日一、 题目 FIR 滤波器的窗函数设计法及性能比较1. FI R滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。

与I IR滤波器相比,FIR 滤波器的主要特点为: a. 线性相位;b.非递归运算。

2. FIR滤波器的设计FIR 滤波器的设计方法主要有三种:a.窗函数设计法;b.频率抽样发;c.最小平法抽样法; 这里我主要讨论在MA TLAB 环境下通过调用信号分析与处理工具箱的几类窗函数来设计滤波器并分析与比较其性能。

窗函数法设计F IR 滤波器的一般步骤如下:a. 根据实际问题确定要设计的滤波器类型;b. 根据给定的技术指标,确定期望滤波器的理想频率特性;c. 求期望滤波器的单位脉冲响应;d. 求数字滤波器的单位脉冲响应;e. 应用。

常用的窗函数有同。

时与布莱克曼窗结果相当时与海明窗结果相同;时与矩形窗一致;当当885.84414.50]!)2/([1)(120===+=∑∞=x x x m x x I m m4. 常用窗函数的参数函数,可定义为是零阶式中Bessel x I n R I N n I n w windowKaiser n R N n N n n w windowBalckm an n R N n n w windowHam m ing n R N n n w windowHanning N N N N )()5.2.9()(])(})]1/(2[1{[)()4()4.2.9()()]14cos(08.0)12cos(5.042.0[)()3()3.2.9()()]12cos(46.054.0[)()2()2.2.9()()]1cos(5.05.0[)()1(0020ββππππ--=-+--=--=--=5.FIR滤波器的MATLAB实现方式在MATLAB信号分析与处理工具箱中提供了大量FIR窗函数的设计函数,本次用到主要有以下几种:hanning(N) hanning窗函数的调用hamming(N) hamming窗函数的调用blackman(N) blackman窗函数的调用kaiser(n+1,beta) kaiser窗函数的调用kaiserord 计算kaiser窗函数的相关参数freqz求取频率响应filter 对信号进行滤波的函数6.实验具体步骤本次实验分别通过调用hanning ,hamming ,Blackman,kaiser窗函数,给以相同的技术参数,来设计低通,带通,高通滤波器,用上述窗函数的选择标准来比较各种窗函数的优劣,并给以一个简谐波进行滤波处理,比较滤波前后的效果。

窗函数法设计FIR滤波器

窗函数法设计FIR滤波器

窗函数法设计FIR滤波器FIR(Finite Impulse Response)滤波器是一种常见的数字滤波器,通过一系列有限长度的输入信号进行系统响应的采样,使用窗函数法设计FIR滤波器是一种常用且有效的方法。

设计FIR滤波器的第一步是确定滤波器的阶数。

阶数是指滤波器的长度,通常表示为N。

设计FIR滤波器的第二步是选择滤波器的截止频率。

截止频率决定滤波器的频率响应。

设计FIR滤波器的第三步是选择窗函数。

窗函数是一种平滑函数,用于调整滤波器的频率响应。

常见的窗函数有矩形窗、汉明窗、海明窗等。

矩形窗是最简单的窗函数,没有频率响应调整的效果。

汉明窗是常用的窗函数之一,它可以提供较好的频率响应特性。

海明窗是一种能够提供更优秀频率响应的窗函数。

设计FIR滤波器的第四步是确定窗函数的参数。

这些参数包括主瓣宽度、动态范围、副瓣能量等。

设计FIR滤波器的最后一步是计算滤波器的系数。

滤波器的系数是由输入信号进行线性组合得到的。

通常采用离散频率域设计方法计算FIR滤波器的系数。

该方法通过将滤波器的频率响应与目标响应之间的差异最小化来寻找最佳系数。

具体计算过程包括以下几个步骤:1.设计一个无限长的理想低通滤波器,其频率响应与所需滤波器接近。

2. 使用离散Fourier变换将无限长的理想滤波器转换为有限长的频率响应。

3.选择适当的窗函数,根据窗函数的参数修改频率响应。

4.反变换回时间域,得到FIR滤波器的系数。

设计完滤波器后,可以通过将输入信号与滤波器系数进行卷积运算来获得滤波后的信号。

滤波器系数的选择决定了滤波器的性能。

通常可以通过频率响应、滤波器特性等指标来评估滤波器的性能。

使用窗函数法设计FIR滤波器可以得到满足特定要求的滤波器,其设计过程相对简单,易于实现。

但需要注意的是,窗函数法设计的FIR滤波器在频率响应的过渡区域可能会有较大的波动,需要根据具体应用场景对滤波器参数进行调整。

总之,窗函数法是一种常见且有效的设计FIR滤波器的方法,通过选择合适的窗函数和调整参数,可以得到满足特定要求的滤波器。

基于汉明窗函数的FIR低通滤波器的设计

基于汉明窗函数的FIR低通滤波器的设计

基于汉明窗函数的FIR低通滤波器的设计FIR(Finite Impulse Response)低通滤波器是一种常用的数字滤波器,常用于信号处理和通信系统中,可以用于信号去噪、信号平滑和频率分析等应用。

本文将讨论基于汉明窗函数的FIR低通滤波器的设计原理和步骤。

汉明窗函数是一种常用的窗函数,它能够在频域上对滤波器的频率响应进行调整,从而实现滤波器在频率上的截止效果。

汉明窗函数的特点是窗口两端的幅度衰减较慢,能够提供较好的低频衰减特性。

设计基于汉明窗函数的FIR低通滤波器,一般包括以下步骤:1. 确定滤波器的阶数和截止频率:阶数决定了滤波器的复杂度,而截止频率则决定了滤波器的频率截止效果。

根据具体应用需求,选择适当的阶数和截止频率。

2. 计算滤波器的理想频率响应:理想的低通滤波器频率响应在截止频率之前的幅度为1,截止频率之后的幅度为0。

根据滤波器的阶数和截止频率,计算出滤波器的理想频率响应。

3. 计算滤波器的单位冲激响应:使用逆离散傅里叶变换(IDFT)将滤波器的理想频率响应转换为单位冲激响应。

单位冲激响应描述了滤波器对单位冲激信号的响应。

4. 应用窗函数:将计算得到的单位冲激响应与汉明窗函数进行卷积操作,从而得到最终的滤波器冲激响应。

窗函数的作用是降低滤波器的频率响应在截止频率附近的波动,使滤波器具备较好的截止频率特性。

5. 设计具体的滤波器系数:通过对滤波器的冲激响应进行采样,得到滤波器的系数。

滤波器系数是滤波器的频率响应和相位响应的离散表示,决定了滤波器的实际滤波效果。

6. 优化滤波器性能:可以采用窗函数和滤波器阶数的调整来优化滤波器的性能。

调整窗函数可以改变滤波器的频率特性,调整阶数可以改变滤波器的频率截止效果。

在设计完成后,可以将设计得到的FIR低通滤波器应用于实际的信号处理或通信系统中。

通过滤波器的输入信号与滤波器系数的卷积运算,可以得到滤波器输出信号,从而实现对输入信号的滤波处理。

需要注意的是,在实际应用中,可能还需要考虑滤波器的响应时间、滤波器的实现形式(直接形式、级联形式等)等因素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
p
Ap
:通带截止频率,s :阻带下限截止频率,
As 阻带允许的最小衰减 通带允许的最大衰减,
选择一个适当的窗函数,确定单位冲激响应 ,绘出所设计的滤 波器的幅度响应
分别选择海明窗、布莱克曼窗、汉宁窗设计上述FIR数字低通滤 波器
1、海明窗/布莱克曼窗/汉宁窗
海明窗MATLAB代码:
clear all; Wp=0.15*pi;Ws=0.3*pi; trw=Ws-Wp; N=ceil(6.6*pi/trw)+1 Wc=(Ws+Wp)/2; n=0:1:N-1; hd=id_A(Wc,N); 应 w_ham=(hamming(N))'; h=hd.*w_ham; [db,mag,pha,w]=freqzB(h,[1]); delta_w=2*pi/1000; Ap=-(min(db(1:1:Wp/delta_w+1))) As=-round(max(db(Ws/delta_w+1:1:501))) subplot(2,2,1);stem(n,hd);
Y () X() H() 当输入信号x(n)通过滤波器h(n)后,其输出y(n)中不再含有
|ω|>ωc的频率成分,仅含|ω|<ωc的信号成分,其中ωc是滤
波器的转折频率。
二、经典数字滤波器分类
经典数字滤波器按照单位取样响应h(n)的实域特性可分为 无限冲激响应(IIR)系统和有限冲激响应(FIR)。 如果单位取样响应是时宽无限的h(n),n0<n<
巴特利特窗
海明窗 布2π/N 可调 可调
6.2π/N
6.6π/N 11π/N 可调 可调
44dB
53dB 74dB 可调 可调
四、FIR数字低通滤波器的窗设计
根据下列技术指标,设计一个FIR数字低通滤波器:
p 0.15 , s 0.5 , Ap 0.3dB, As 45dB
%过渡带宽度 %滤波器长度 %理想低通滤波器的截止频率 %理想低通滤波器的单位冲激响 %海明窗 %截取得到实际的单位脉冲响应 %计算实际滤波器的幅度响应 %实际通带纹带 %实际阻带纹理
xlabel('(a)理想单位脉冲响应hd(d)'); subplot(2,2,2);stem(n,w_ham);
,则称之
为IIR系统,而如果单位取样响应是时宽有限的h(n),n1<n<n2, 则称为FIR系统
三、窗函数法设计FIR数字滤波器
窗函数法是设计FIR数字滤波器的最简单法。它在 设计FIR数字滤波器中有很重要的作用,正确地选择窗
函数可以提高所设计数字滤波器的性能,或者在满足
设计要求的情况下,减小FIR数字滤波器的阶次。 常用的窗函数有以下几种:矩形窗、三角窗、汉
带宽换为它们的函数名和精确过渡带宽即可
在以上程序中,调用到自定义的理想低通滤波器单位脉冲响应计算函数 id_A.m及滤波器的幅值响应、相位响应函数 freqzB.m。它们的代码如下:
function hd=id_A(Wc,N) %wc为截止频率 %N为窗长度 %hd为低通冲激响应 alpha=(N-1)/2; n=0:N-1; m=n-alpha+eps; hd=sin(Wc*m)./(pi*m) function[db,mag,pha,w]=freqzB(b,a) %滤波器的幅值响应、相位响应 %db为相对幅值响应 %mag为绝对幅值响应 %pha为相位响应 %w采样频率 %b为系统函数H(z)的分子多项式 %a为系统H(z)的分母多项式 [h,w]=freqz(b,a,1000,'whole'); h=(h(1:1:501)); w=(w(1:1:501)); mag=abs(h); %绝对幅值响应 db=20*log10((mag+eps)/max(mag)); %相对幅值响应 pha=angle(h); %相位响应
滤、检测和参数估计等方面起着重要的作用。 当用硬件实现一个DF时,所需的元件是乘法器、延时
器和相加器;而用MATLAB软件实现时,它仅仅需要线性卷
积程序。
一、数字滤波器概念
数字滤波器的作用是对输入信号进行滤波,就如同信号 通过系统一样。对于线性时不变系统,其实域输入输出关系 是: y(n)=x(n)*h(n) 若y(n)、x(n)的傅里叶变化存在,则输入输出的频域关系是:
宁窗、海明窗、布莱克曼窗、切比雪夫窗及凯塞窗。
各窗的函数如下: 矩形窗:boxcar 三角窗:triang 汉宁窗:hann 海明窗:hamming 布莱克曼窗:blackman 切比雪夫窗:chebwin 凯塞窗;kaiser
各种窗函数的性能比较
窗函数 矩形窗 汉宁窗 近似过渡带宽 4π/N 8π/N 精确过渡带宽 1.8π/N 6.1π/N 最小带阻衰减 21dB 25dB
xlabel('(b)海明窗w(n)');
subplot(2,2,3);stem(n,h); xlabel('(c)实际单位脉冲响应hd(d)'); subplot(2,2,4);plot(w/pi,db); xlabel('(d)幅度响应(dB)'); axis([0 1 -100 10]);
注:布莱克曼窗和汉宁窗的程序代码只需将海明窗的函数名、精确过渡
MATLAB在信号处理中的应用 ----窗函数法设计FIR低通数字滤波器
一、数字滤波器概念
信号往往夹杂着噪声及无用信号成分,必须将这些干 扰成分虑除。滤波器可对信号进行筛选,通过特定频段的
信号。
若滤波器的输入、输出都是离散时间信号,那么该滤 波器的单位冲激响应h(n)也必然是离散的,这种滤波器称
为数字滤波器(Digital Filter,DF)。它在信号的过
海明窗程序运行结果: N= AP= 45 0.0484
As= 52
布莱克曼窗程序运行结果: N= AP= 75 0.0030
As= 75
汉宁窗程序运行结果: N= AP= 43 0.0731
As= 44
相关文档
最新文档