⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guifilters.m

📁 利用 GUI 界面设计滤波器设计
💻 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 + -