A list,

1 Design Principle



1.1 Filter Concept



1.2 System function and difference equation of digital filter



1.3 Representation of digital filter structure





1.4 Classification of digital filters





2.1 Comparison of IIR filter and FIR filter



2.2 Principle of FIR filter

















3 simulation steps of FIR filter



Ii. Source code

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

% Last Modified by GUIDE v2. 5 13-Dec- 2020. 17:32:39

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

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

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes DSP wait for user response (see UIRESUME)
% uiwait(handles.main);


% --- Outputs from this function are returned to the command line.
function varargout = DSP_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 file_Callback(hObject, eventdata, handles)
% hObject    handle to file (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function noise_Callback(hObject, eventdata, handles)
% hObject    handle to noise (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function filter_Callback(hObject, eventdata, handles)
% hObject    handle to filter (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function help_Callback(hObject, eventdata, handles)
% hObject    handle to help (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function help_doc_Callback(hObject, eventdata, handles)
% hObject    handle to help_doc (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function about_Callback(hObject, eventdata, handles)
% hObject    handle to about (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
string =str2mat('Sound Processing Sample program'[],'     版本:1.0'[],'Development: Xiang Xiaoqiang, Chu Qianyun, Xu Rulin'[],'Email: [email protected]'[],'Special thanks for the great sponsorship of anu Model Aircraft Team');
msgbox(string); % -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --function IIR_Callback(hObject, eventdata, handles)
% hObject    handle to IIR (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function FIR_Callback(hObject, eventdata, handles)
% hObject    handle to FIR (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function flat_noise_Callback(hObject, eventdata, handles)
% hObject    handle to flat_noise (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

set(handles.L1,'Visible'.'off');
set(handles.L2,'Visible'.'off');
set(handles.L3,'Visible'.'off');
set(handles.L4,'Visible'.'off');
set(handles.E1,'Visible'.'off');
set(handles.E2,'Visible'.'off');
set(handles.E3,'Visible'.'off');
set(handles.E4,'Visible'.'off');
set(handles.single_run,'Enable'.'off');
set(handles.multi_run,'Enable'.'off');
set(handles.IIR_run,'Enable'.'off');
set(handles.FIR_run,'Enable'.'off');

wav = evalin('base'.'data');
fs = evalin('base'.'Fs');
reswav = awgn(wav,20); % add signal-to-noise ratio is10The gaussian noise assignin('base'.'resdata',reswav);
fftwav = abs(fft(reswav));
axes(handles.Time);
x = (0:length(reswav)- 1)/fs; handles.Line1 = plot(x,reswav); guidata(hObject,handles); % store valueset(handles.Time,'XMinorTick'.'on');
grid on;
xlabel('time/s');
ylabel('幅度');
title('Time domain diagram');


axes(handles.Freq);
xf = (0:length(reswav)- 1)'*fs/length(fftwav); handles.Line2 = plot(xf,fftwav); guidata(hObject,handles); Set (handles.Freq,'XMinorTick'.'on');
grid on;
xlabel('frequency/Hz');
ylabel('幅度');
title('Frequency domain diagram');
assignin('base'.'flag'.1);
Copy the code

3. Operation results







Fourth, note

Version: 2014 a