当前位置 : 主页 > 编程语言 > python >

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

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 面对庞杂繁多的原始信号,如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤


 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 EDIT
gui_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});
end
if 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 Filter
handles.output = hObject;
% Update handles structure
guidata(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 structure
varargout{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');
end
function 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');
end
function 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');
end
function 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');
end
function 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');
end
function 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');
end
function 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 MinOrder
function 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');
end
function 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 仿真结果

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

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

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

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

4 参考文献

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

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

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



网友评论