📄 guifilters.m
字号:
function varargout = guifilters(varargin)% GUIFILTERS Application M-file for guifilters.fig% FIG = GUIFILTERS launch guifilters GUI.% GUIFILTERS('callback_name', ...) invoke the named callback.% Last Modified by GUIDE v2.0 01-Aug-2003 14:58:53if nargin == 0 % LAUNCH GUI fig = openfig(mfilename,'reuse'); % Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{1} = fig; endelseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK try if (nargout) [varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard else feval(varargin{:}); % FEVAL switchyard end catch disp(lasterr); endend%| ABOUT CALLBACKS:%| GUIDE automatically appends subfunction prototypes to this file, and %| sets objects' callback properties to call them through the FEVAL %| switchyard above. This comment describes that mechanism.%|%| Each callback subfunction declaration has the following form:%| <SUBFUNCTION_NAME>(H, EVENTDATA, HANDLES, VARARGIN)%|%| The subfunction name is composed using the object's Tag and the %| callback type separated by '_', e.g. 'slider2_Callback',%| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.%|%| H is the callback object's handle (obtained using GCBO).%|%| EVENTDATA is empty, but reserved for future use.%|%| HANDLES is a structure containing handles of components in GUI using%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This%| structure is created at GUI startup using GUIHANDLES and stored in%| the figure's application data using GUIDATA. A copy of the structure%| is passed to each callback. You can store additional information in%| this structure at GUI startup, and you can change the structure%| during callbacks. Call guidata(h, handles) after changing your%| copy to replace the stored original so that subsequent callbacks see%| the updates. Type "help guihandles" and "help guidata" for more%| information.%|%| VARARGIN contains any extra arguments you have passed to the%| callback. Specify the extra arguments by editing the callback%| property in the inspector. By default, GUIDE sets the property to:%| <MFILENAME>('<SUBFUNCTION_NAME>', gcbo, [], guidata(gcbo))%| Add any extra arguments after the last argument, before the final%| closing parenthesis.% --------------------------------------------------------------------function varargout = rp_value_Callback(h, eventdata, handles, varargin) rp=str2num(get(handles.rp_value,'string')); if(rp>1)|(rp<0) handle=errordlg('enter the value of rp between 0 and 1','guifilter_design'); break; end set(handles.rp_slider1,'value',rp);% --------------------------------------------------------------------function varargout = rp_slider1_Callback(h, eventdata, handles, varargin) rp=get(handles.rp_slider1,'value'); set(handles.rp_value,'string',rp);% --------------------------------------------------------------------function varargout = rs_slider2_Callback(h, eventdata, handles, varargin)rs=get(handles.rs_slider2,'value');set(handles.rs_value,'string',rs);% --------------------------------------------------------------------function varargout = wp_slider3_Callback(h, eventdata, handles, varargin)wp=get(handles.wp_slider3,'value');set(handles.wp_value,'string',wp);% --------------------------------------------------------------------function varargout = ws_slider4_Callback(h, eventdata, handles, varargin)ws=get(handles.ws_slider4,'value');set(handles.ws_value,'string',ws);% --------------------------------------------------------------------function varargout = popupmenu1_Callback(h, eventdata, handles, varargin) a=get(handles.popupmenu1,'value'); rp=get(handles.rp_slider1,'value'); rs=get(handles.rs_slider2,'value'); wp=2*pi*get(handles.wp_slider3,'value'); ws=2*pi*get(handles.ws_slider4,'value'); global omega gain an order; switch a case 1 if(wp>ws) handle=errordlg('wp must be less than ws for lowpass filter','guifilter_design'); break; end [order,wn]=buttord(wp,ws,rp,rs,'s'); [num,den]=butter(order,wn,'s'); omega=[0:200:12000*pi]; h=freqs(num,den,omega); gain=20*log10(abs(h)); an=angle(h); case 2 if (ws>wp) handle=errordlg('ws must be less than wp for highpass filter','guifilter_design'); break; end [order,wn]=buttord(wp,ws,rp,rs,'s'); [num,den]=butter(order,wn,'high','s'); omega=[0:200:12000*pi]; h=freqs(num,den,omega); gain=20*log10(abs(h)); an=angle(h); case 3 if (ws<wp) handle=errordlg('wp must be less than ws for bandpass filter','guifilter_design'); break; end [order]=buttord(wp,ws,rp,rs,'s'); wn=[wp ws]; [num,den]=butter(order,wn,'bandpass','s'); omega=[0:200:12000*pi]; h=freqs(num,den,omega); gain=20*log10(abs(h)); an=angle(h); case 4 if (ws>wp) handle=errordlg('ws must be less than wp for bandstop filter ','guifilter_design'); break; end [order]=buttord(wp,ws,rp,rs,'s'); wn=[wp ws]; [num,den]=butter(order,wn,'stop','s'); omega=[0:200:12000*pi]; h=freqs(num,den,omega); gain=20*log10(abs(h)); an=angle(h); end % --------------------------------------------------------------------function varargout = rs_value_Callback(h, eventdata, handles, varargin) rs=str2num(get(handles.rs_value,'string')); if(rs<0)|(rs>60) handle=errordlg('enter the value of rs between 0 and 60','guifilter_design'); break; end set(handles.rs_slider2,'value',rs); % --------------------------------------------------------------------function varargout = wp_value_Callback(h, eventdata, handles, varargin) wp=str2num(get(handles.wp_value,'string')); if(wp<0)|(wp>6000) handle=errordlg('enter the value of wp between 0 and 6000','guifilter_design'); break; end set(handles.wp_slider3,'value',wp); % --------------------------------------------------------------------function varargout = ws_value_Callback(h, eventdata, handles, varargin) ws=str2num(get(handles.ws_value,'string')); if(ws<0)|(ws>6000) handle=errordlg('enter the value of ws between 0 and 6000','guifilter_design'); break; end set(handles.ws_slider4,'value',ws);% --------------------------------------------------------------------function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)push=get(handles.pushbutton1,'value'); global omega gain an;if (push==1) figure(2) subplot(2,1,1); plot(omega/(2*pi),gain);grid ylabel('Gain in dB ----->');xlabel('(a)frequency in rad/sec----->'); subplot(2,1,2); plot(omega/(2*pi),an);grid ylabel('Phase in rad. ----->');xlabel('(b)frequency in rad/sec----->');else break;end global order;str= sprintf('order:%d',order);set(handles.edit9,'string',str);%--------------------------------------------------------------------function varargout = edit9_Callback(h, eventdata, handles, varargin) % --------------------------------------------------------------------function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)clcclear allclose allclose(gcbf)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -