www.gusucode.com > signal 工具箱matlab源码程序 > signal/+fspecs/@abstractspec/window.m
function Hd = window(this, win, varargin) %WINDOW Design a window filter. % Copyright 1988-2011 The MathWorks, Inc. d = getdesignobj(this); if ~isfield(d, 'window') error(message('signal:fspecs:abstractspec:window:invalidDesign')); end d = feval(d.window); % Add the System object property if it applies. supportedStructs = addsysobjdesignopt(d); if nargin < 2 % NO OP elseif isprop(d, win) varargin = {win, varargin{:}}; elseif isstruct(win) set(d, win); else winstr = getwinstr(win); warning(message('signal:fspecs:abstractspec:window:deprecatedFeature', winstr)); % If we have a structure, set it into the object. if ~isempty(varargin), if isstruct(varargin{1}) set(d, varargin{1}); varargin(1) = []; end end set(d, 'Window', win); end % If we have any more PV pairs set them into the design object. if length(varargin) > 1, set(d, varargin{:}); end % Error out before designing the filter if a System object has been % requested with a structure that is not supported. if isprop(d,'SystemObject') && d.SystemObject && ... ~any(strcmp(d.FilterStructure,supportedStructs)) method = 'window'; error(message('signal:fspecs:basecatalog:SysObjNotSupported',... d.FilterStructure,method,'SystemObject',method,'SystemObject')) end Hd = design(d, this); % ------------------------------------------------------------------------- function winstr = getwinstr(win) if isa(win, 'function_handle') winstr = ['@', func2str(win)]; elseif iscell(win) winstr = ['{' getwinstr(win{1})]; for indx = 2:length(win) if ischar(win{indx}) winstr = sprintf('%s, %s', winstr, win{indx}); else winstr = sprintf('%s, %g', winstr, win{indx}); end end winstr = [winstr '}']; elseif isnumeric(win) winstr = 'WINDOW_VECTOR'; else winstr = ['''' win '''']; end % [EOF]