【滤波器】基于matlab GUI高通+低通+带通+带阻FIR滤波器设计【含Matlab源码 1345期】

209 阅读3分钟

一、数字滤波器设计简介(附课题作业报告)

1 设计原理 在这里插入图片描述 1.1 滤波器概念 在这里插入图片描述 1.2 数字滤波器的系统函数和差分方程 在这里插入图片描述 1.3 数字滤波器结构的表示 在这里插入图片描述 在这里插入图片描述 1.4 数字滤波器的分类 在这里插入图片描述 在这里插入图片描述 2.1 IIR滤波器与FIR滤波器的分析比较 在这里插入图片描述 2.2 FIR滤波器的原理 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 3 FIR滤波器的仿真步骤 在这里插入图片描述 在这里插入图片描述

二、部分源代码

function varargout = yemian(varargin)
% yemian M-file for yemian.fig
%      yemian, by itself, creates a new yemian or raises the existing
%      singleton*.
%
%      H = yemian returns the handle to a new yemian or the handle to
%      the existing singleton*.
%
%      yemian('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in yemian.M with the given input arguments.
%
%      yemian('Property','Value',...) creates a new yemian or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before yemian_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to yemian_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 yemian

% Last Modified by GUIDE v2.5 17-Jun-2021 23:53:25

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @yemian_OpeningFcn, ...
                   'gui_OutputFcn',  @yemian_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 yemian is made visible.
function yemian_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 yemian (see VARARGIN)

% Choose default command line output for yemian
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes yemian wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = yemian_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;


% --- Executes on button press in GUIRUN.
function GUIRUN_Callback(hObject, eventdata, handles)
luogwei(handles)
% hObject    handle to GUIRUN (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)




% --- Executes during object creation, after setting all properties.
function axes1_CreateFcn(hObject, eventdata, handles)

axes(hObject);
RGB=imread('33.jpg');
image(RGB);
set(hObject,'xTick',[]);%x§
set(hObject,'ytick',[]);%
set(hObject,'box','off');%
text(600,700,'welcom','fontsize',8,'color','b');%
text(600,900,'0801130534','fontsize',8,'color','r');

% hObject    handle to axes1 (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 axes1




% --- Executes during object creation, after setting all properties.
% hObject    handle to axes2 (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 axes2




% --- Executes during object creation, after setting all properties.
function axes3_CreateFcn(hObject, eventdata, handles)
axes(hObject);
RGB=imread('2.jpg');
image(RGB);
set(hObject,'xTick',[]);
set(hObject,'ytick',[]);
%set(hObject,'box','off');

% hObject    handle to axes3 (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 axes3

% --- Executes just before nizhiqing is made visible.
function nizhiqing_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   unrecognized PropertyName/PropertyValue pairs from the
%            command line (see VARARGIN)

% Choose default command line output for nizhiqing
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

function AutoChoose(handles)
Nn=128;
DigitalFilter_value=get(handles.DigitalFilter,'Value');
FilterDesign_value=get(handles.FilterDesign,'Value');
Windows_value=get(handles.Windows,'Value');
FilterType_value=get(handles.FilterType,'Value');
DisplayType_value=get(handles.DisplayType,'Value');
Order_value=get(handles.Order,'Value');

Rp_value=str2double(get(handles.Rp,'String'));
Rs_value=str2double(get(handles.Rs,'String'));

Fs_value=str2double(get(handles.Fs,'String'));
Fp1_value=str2double(get(handles.Fp1,'String'));
Fp2_value=str2double(get(handles.Fp2,'String'));
Fst1_value=str2double(get(handles.Fst1,'String'));
Fst2_value=str2double(get(handles.Fst2,'String'));

wp1=2*Fp1_value/Fs_value;
wp2=2*Fp2_value/Fs_value;
ws1=2*Fst1_value/Fs_value;
ws2=2*Fst2_value/Fs_value;
wp=[wp1,wp2];
ws=[ws1,ws2];

%IIR
if(DigitalFilter_value==1)
  %IIR lowpass or highpassor bandpass or stoppass
   %butter word
  if(FilterDesign_value==1)
    %lowpass or highpass
    if((FilterType_value==1)||(FilterType_value==2))
     [n,Wn]=buttord(wp1,ws1,Rp_value,Rs_value)
     %set(handles.MinOrderDisplay,'string',num2str(n))
    else
     %bandpass or stoppass
     if((FilterType_value==3)||(FilterType_value==4)) 
     [n,Wn]=buttord(wp,ws,Rp_value,Rs_value)
     set(handles.MinOrderDisplay,'string',num2str(n))
     end
   end
 else

  %cheby1
  if(FilterDesign_value==2)
    %lowpass or highpass
    if((FilterType_value==1)||(FilterType_value==2))
     [n,Wn]=cheb1ord(wp1,ws1,Rp_value,Rs_value);
     set(handles.MinOrderDisplay,'string',num2str(n));
    else
     %bandpass or stoppass
     if((FilterType_value==3)||(FilterType_value==4)) 
     [n,Wn]=cheb1ord(wp,ws,Rp_value,Rs_value)
     set(handles.MinOrderDisplay,'string',num2str(n))
     end
   end
 else
  %cheby2
  if(FilterDesign_value==3)
    %lowpass or highpass
    if((FilterType_value==1)||(FilterType_value==2))
     [n,Wn]=cheb2ord(wp1,ws1,Rp_value,Rs_value);
      set(handles.MinOrderDisplay,'string',num2str(n));
    else
     %bandpass or stoppass   
     if((FilterType_value==3)||(FilterType_value==4)) 
     [n,Wn]=cheb2ord(wp,ws,Rp_value,Rs_value);
      set(handles.MinOrderDisplay,'string',num2str(n));
     end
   end


三、运行结果

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本 2014a

2 参考文献 [1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015. [2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020. [3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.