【滤波器】基于 FIR实现高通+低通+带通+带阻滤波器设计含Matlab源码(滤波器概念)

网友投稿 273 2022-09-05


【滤波器】基于 FIR实现高通+低通+带通+带阻滤波器设计含Matlab源码(滤波器概念)

1 简介

面对庞杂繁多的原始信号, 如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点, 在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。作为强大的计算软件, MATLAB提供了编写图形用户界面的功能。所谓图形用户界面, 简称为GUI, 是由各种图形对象, 如图形窗口菜单按钮、文本框等构建的用户界面。

MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。

2 部分代码

function varargout = Filter(varargin)% FILTER M-file for Filter.fig% FILTER, by itself, creates a new FILTER or raises the existing% singleton*.%% H = FILTER returns the handle to a new FILTER or the handle to% the existing singleton*.%% FILTER('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in FILTER.M with the given input arguments.%% FILTER('Property','Value',...) creates a new FILTER or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before Filter_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to Filter_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help Filter% Last Modified by GUIDE v2.5 03-Jun-2021 01:02:47% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Filter_OpeningFcn, ... 'gui_OutputFcn', @Filter_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []);if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});endif nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before Filter is made visible.function Filter_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 MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to Filter (see VARARGIN)% Choose default command line output for Filterhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes Filter wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = Filter_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (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 structurevarargout{1} = handles.output;function Fs_Callback(hObject, eventdata, handles)% hObject handle to Fs (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of Fs as text% str2double(get(hObject,'String')) returns contents of Fs as a double% --- Executes during object creation, after setting all properties.function Fs_CreateFcn(hObject, eventdata, handles)% hObject handle to Fs (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction Fp1_Callback(hObject, eventdata, handles)%检查输入的通带边缘频率是否【0,1】Fs_value=str2double(get(handles.Fs,'String'));Fp1_value=str2double(get(handles.Fp1,'String'));wp1=2*Fp1_value/Fs_value;if(wp1>=1) errordlg('wp1=2*Fp1/Fs, 归一化频率不在【0,1】范围内,请输入正确的参数','错误信息') end% hObject handle to Fp1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of Fp1 as text% str2double(get(hObject,'String')) returns contents of Fp1 as a double% --- Executes during object creation, after setting all properties.function Fp1_CreateFcn(hObject, eventdata, handles)% hObject handle to Fp1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction Fp2_Callback(hObject, eventdata, handles)%检查输入的通带边缘频率是否【0,1】Fs_value=str2double(get(handles.Fs,'String'));Fp2_value=str2double(get(handles.Fp2,'String'));wp2=2*Fp2_value/Fs_value;if(wp2>=1) errordlg('wp2=2*Fp2/Fs, 归一化频率不在【0,1】范围内,请输入正确的参数','错误信息') end% hObject handle to Fp2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of Fp2 as text% str2double(get(hObject,'String')) returns contents of Fp2 as a double% --- Executes during object creation, after setting all properties.function Fp2_CreateFcn(hObject, eventdata, handles)% hObject handle to Fp2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction Fs1_Callback(hObject, eventdata, handles)%检查输入的阻带边缘频率是否【0,1】Fs_value=str2double(get(handles.Fs,'String'));Fs1_value=str2double(get(handles.Fs1,'String'));ws1=2*Fs1_value/Fs_value;if(ws1>=1) errordlg('ws1=2*Fs1/Fs, 归一化频率不在【0,1】范围内,请输入正确的参数','错误信息') end% hObject handle to Fs1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of Fs1 as text% str2double(get(hObject,'String')) returns contents of Fs1 as a double% --- Executes during object creation, after setting all properties.function Fs1_CreateFcn(hObject, eventdata, handles)% hObject handle to Fs1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction Fs2_Callback(hObject, eventdata, handles)%检查输入的阻带边缘频率是否【0,1】Fs_value=str2double(get(handles.Fs,'String'));Fs2_value=str2double(get(handles.Fs2,'String'));ws2=2*Fs2_value/Fs_value;if(ws2>=1) errordlg('ws2=2*Fs2/Fs, 归一化频率不在【0,1】范围内,请输入正确的参数','错误信息') end% hObject handle to Fs2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of Fs2 as text% str2double(get(hObject,'String')) returns contents of Fs2 as a double% --- Executes during object creation, after setting all properties.function Fs2_CreateFcn(hObject, eventdata, handles)% hObject handle to Fs2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction Rp_Callback(hObject, eventdata, handles)% hObject handle to Rp (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of Rp as text% str2double(get(hObject,'String')) returns contents of Rp as a double% --- Executes during object creation, after setting all properties.function Rp_CreateFcn(hObject, eventdata, handles)% hObject handle to Rp (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction Rs_Callback(hObject, eventdata, handles)% hObject handle to Rs (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of Rs as text% str2double(get(hObject,'String')) returns contents of Rs as a double% --- Executes during object creation, after setting all properties.function Rs_CreateFcn(hObject, eventdata, handles)% hObject handle to Rs (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on selection change in FilterDesign.function FilterDesign_Callback(hObject, eventdata, handles) AutoRun_value=get(handles.AutoRun,'Value'); if(AutoRun_value==1) AutoChoose(handles) end% hObject handle to FilterDesign (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns FilterDesign contents as cell array% contents{get(hObject,'Value')} returns selected item from FilterDesign% --- Executes during object creation, after setting all properties.function FilterDesign_CreateFcn(hObject, eventdata, handles)% hObject handle to FilterDesign (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on selection change in FilterType.function FilterType_Callback(hObject, eventdata, handles)%当选择不同的滤波器类型时屏蔽相应的输入 FilterType_value=get(handles.FilterType,'Value'); %当选择低通滤波器时屏蔽Fp2、Fs2 if(FilterType_value==1) set(handles.Fp2,'visible','off'); set(handles.Fs2,'visible','off'); set(handles.text17,'visible','off'); set(handles.text19,'visible','off'); set(handles.text6,'visible','off'); set(handles.text10,'visible','off'); %当选择高通滤波器时屏蔽Fp2、Fs2 else if(FilterType_value==2) set(handles.Fp2,'visible','off'); set(handles.Fs2,'visible','off'); set(handles.text17,'visible','off'); set(handles.text19,'visible','off'); set(handles.text6,'visible','off'); set(handles.text10,'visible','off'); %当选择带通滤波器时显示Fp2、Fs2 else if(FilterType_value==3) set(handles.Fp2,'visible','on'); set(handles.Fs2,'visible','on'); set(handles.text17,'visible','on'); set(handles.text19,'visible','on'); set(handles.text6,'visible','on'); set(handles.text10,'visible','on'); else if(FilterType_value==4) set(handles.Fp2,'visible','on'); set(handles.Fs2,'visible','on'); set(handles.text17,'visible','on'); set(handles.text19,'visible','on'); set(handles.text6,'visible','on'); set(handles.text10,'visible','on'); end end end end% hObject handle to FilterType (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns FilterType contents as cell array% contents{get(hObject,'Value')} returns selected item from FilterType% --- Executes during object creation, after setting all properties.function FilterType_CreateFcn(hObject, eventdata, handles)% hObject handle to FilterType (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on selection change in DisplayType.function DisplayType_Callback(hObject, eventdata, handles) AutoRun_value=get(handles.AutoRun,'Value'); if(AutoRun_value==1) AutoChoose(handles) end% hObject handle to DisplayType (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns DisplayType contents as cell array% contents{get(hObject,'Value')} returns selected item from DisplayType% --- Executes during object creation, after setting all properties.function DisplayType_CreateFcn(hObject, eventdata, handles)% hObject handle to DisplayType (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on selection change in Windows.function Windows_Callback(hObject, eventdata, handles) AutoRun_value=get(handles.AutoRun,'Value'); if(AutoRun_value==1) AutoChoose(handles) end% hObject handle to Windows (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns Windows contents as cell array% contents{get(hObject,'Value')} returns selected item from Windows% --- Executes during object creation, after setting all properties.function Windows_CreateFcn(hObject, eventdata, handles)% hObject handle to Windows (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on selection change in DigitalFilter.function DigitalFilter_Callback(hObject, eventdata, handles) %选择IIR或者FIR屏蔽相应的选项 DigitalFilter_value=get(handles.DigitalFilter,'Value'); %当选择了IIR时,使窗口选项屏蔽 if(DigitalFilter_value==1) set(handles.FilterDesign,'enable','on'); set(handles.Windows,'enable','off'); %当选择了FIR时,使滤波器选择选项屏蔽 else set(handles.FilterDesign,'enable','off'); set(handles.Windows,'enable','on') end AutoRun_value=get(handles.AutoRun,'Value'); if(AutoRun_value==1) AutoChoose(handles) end% hObject handle to DigitalFilter (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns DigitalFilter contents as cell array% contents{get(hObject,'Value')} returns selected item from DigitalFilter% --- Executes during object creation, after setting all properties.function DigitalFilter_CreateFcn(hObject, eventdata, handles)% hObject handle to DigitalFilter (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on button press in Run.function Run_Callback(hObject, eventdata, handles)AutoChoose(handles)% hObject handle to Run (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of Run% --- Executes on button press in Quit.function Quit_Callback(hObject, eventdata, handles)close% hObject handle to Quit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of Quit% --- Executes on button press in AutoRun.function AutoRun_Callback(hObject, eventdata, handles) AutoRun_value=get(handles.AutoRun,'Value'); if(AutoRun_value==1) AutoChoose(handles) end% hObject handle to AutoRun (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of AutoRun% --- Executes during object creation, after setting all properties.function Magnitude_CreateFcn(hObject, eventdata, handles)% hObject handle to Magnitude (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: place code in OpeningFcn to populate Magnitude% --- Executes during object creation, after setting all properties.function Phase_CreateFcn(hObject, eventdata, handles)% hObject handle to Phase (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: place code in OpeningFcn to populate Phase% --- Executes on button press in MinOrder.function MinOrder_Callback(hObject, eventdata, handles)%当不选择输入滤波器阶数时,即使用最小阶数时,选择屏蔽阶数输入 MinOrder_value=get(handles.MinOrder,'Value'); if(MinOrder_value==1) set(handles.Order,'visible','off'); else set(handles.Order,'visible','on'); end% hObject handle to MinOrder (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of MinOrderfunction MinOrderDisplay_Callback(hObject, eventdata, handles)% hObject handle to MinOrderDisplay (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of MinOrderDisplay as text% str2double(get(hObject,'String')) returns contents of MinOrderDisplay as a double% --- Executes during object creation, after setting all properties.function MinOrderDisplay_CreateFcn(hObject, eventdata, handles)% hObject handle to MinOrderDisplay (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction Order_Callback(hObject, eventdata, handles)% hObject handle to Order (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of Order as text% str2double(get(hObject,'String')) returns contents of Order as a double% --- Executes during object creation, after setting all properties.function Order_CreateFcn(hObject, eventdata, handles)% hObject handle to Order (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% 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 ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on button press in CustomOrderButton.function CustomOrderButton_Callback(hObject, eventdata, handles) CustomOrderButton_value=get(handles.CustomOrderButton,'Value'); if(CustomOrderButton_value==0) set(handles.Order,'visible','off'); else set(handles.Order,'visible','on'); end% hObject handle to CustomOrderButton (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,'Value') returns toggle state of CustomOrderButton% --- Executes during object creation, after setting all properties.function uipanel11_CreateFcn(hObject, eventdata, handles)% hObject handle to uipanel11 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called

3 仿真结果

4 参考文献

[1]张学敏. 基于Matlab的FIR带通滤波器的设计与仿真[J]. 长春工程学院学报:自然科学版, 2007(4):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【手写字母识别】基于ELMAN结合BP神经网络实现手写大写字母(A-O)识别含Matlab源码
下一篇:【车间调度】基于遗传算法实现柔性车间调度问题附Matlab代码(遗传算法解决车间调度问题)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~