www.gusucode.com > signal 工具箱matlab源码程序 > signal/+dspopts/freqresp.m
classdef (CaseInsensitiveProperties=true, TruncatedProperties=true) freqresp < dspopts.abstractfreqrespMCOS %dspopts.freqresp class % dspopts.freqresp extends dspopts.abstractfreqresp. % % dspopts.freqresp properties: % NormalizedFrequency - Property is of type 'bool' % Fs - Property is of type 'mxArray' % CenterDC - Property is of type 'mxArray' % FreqPoints - Property is of type 'psdFreqPointsType enumeration: {'All','User Defined'}' % SpectrumRange - Property is of type 'SignalFrequencyRangeList enumeration: {'Half','Whole'}' % NFFT - Property is of type 'mxArray' % FrequencySpecification - Property is of type 'NFFTorFreqVec enumeration: {'NFFT','FrequencyVector'}' % FrequencyVector - Property is of type 'double_vector user-defined' % % dspopts.freqresp methods: % disp - Display this object. % freqzinputs - Return a cell with the inputs for FREQZ, PHASEZ, etc. % get_frequencyvector - PreGet function for the 'frequencyvector' property. % set_frequencyvector - PreSet function for the 'frequencyvector' property. % set_nfft - PreSet function for the 'nfft' property. properties (AbortSet, SetObservable, GetObservable) %NFFT Property is of type 'mxArray' NFFT = 'nextpow2'; %FREQUENCYSPECIFICATION Property is of type 'NFFTorFreqVec enumeration: {'NFFT','FrequencyVector'}' FrequencySpecification = 'NFFT'; %FREQUENCYVECTOR Property is of type 'double_vector user-defined' FrequencyVector = []; end properties (Access=protected, AbortSet, SetObservable, GetObservable) %PRIVFREQUENCYVECTOR Property is of type 'double_vector user-defined' privFrequencyVector = linspace( 0, 1, 512 ); end methods % constructor block function this = freqresp(varargin) %FREQRESP Construct a FREQRESP object. % this = dspopts.freqresp; this.NFFT = 8192; % Avoid having NFFT set to "new" default 'Nextpow2'. % We need to special case the constructor to allow users to specify the % freequency vector without having to specify the frequencyspecification % first. This would be burdensome. for indx = 1:3:length(varargin) if any(strncmpi(varargin{indx}, {'NFFT', 'FrequencyVector'}, length(varargin{indx}))) varargin = {varargin{1:indx-1}, ... 'FrequencySpecification', varargin{indx}, ... varargin{indx:end}}; end end if nargin set(this, varargin{:}); end end % freqresp end % constructor block methods function set.NFFT(obj,value) obj.NFFT = set_nfft(obj,value); end function set.FrequencySpecification(obj,value) % Enumerated DataType = 'NFFTorFreqVec enumeration: {'NFFT','FrequencyVector'}' value = validatestring(value,{'NFFT','FrequencyVector'},'','FrequencySpecification'); obj.FrequencySpecification = value; end function value = get.FrequencyVector(obj) value = get_frequencyvector(obj,obj.FrequencyVector); end function set.FrequencyVector(obj,value) % User-defined DataType = 'double_vector user-defined' obj.FrequencyVector = set_frequencyvector(obj,value); end function set.privFrequencyVector(obj,value) % User-defined DataType = 'double_vector user-defined' obj.privFrequencyVector = value; end end % set and get functions methods %% public methods function disp(this) %DISP Display this object. p = {'NormalizedFrequency'}; if ~this.NormalizedFrequency p = {p{:}, 'Fs'}; end p = {p{:}, 'FrequencySpecification'}; if strcmpi(this.FrequencySpecification, 'NFFT') p = {p{:}, 'NFFT', 'SpectrumRange', 'CenterDC'}; else p = {p{:}, 'FrequencyVector'}; end siguddutils('dispstr', this, p); end function c = freqzinputs(this) %FREQZINPUTS Return a cell with the inputs for FREQZ, PHASEZ, etc. switch lower(this.FrequencySpecification) case 'nfft' c = {this.NFFT, this.SpectrumRange}; case 'frequencyvector' c = {this.FrequencyVector}; end if ~this.NormalizedFrequency c = {c{:}, this.Fs}; end end function fv = get_frequencyvector(this, fv) %#ok %GET_FREQUENCYVECTOR PreGet function for the 'frequencyvector' property. fv = get(this, 'privFrequencyVector'); end function fv = set_frequencyvector(this, fv) %SET_FREQUENCYVECTOR PreSet function for the 'frequencyvector' property. set(this, 'FrequencySpecification', 'FrequencyVector'); % if strcmpi(this.FrequencySpecification, 'NFFT') % siguddutils('readonlyerror', 'FrequencyVector', ... % 'FrequencySpecification', 'FrequencyVector'); % end set(this, 'privFrequencyVector', fv); fv = []; end function nfft = set_nfft(this, nfft) %SET_NFFT PreSet function for the 'nfft' property. set(this, 'FrequencySpecification', 'NFFT'); if ischar(nfft) || ~isscalar(nfft) || nfft<=0 || rem(nfft,1), error(message('signal:dspopts:freqresp:set_nfft:invalidDataType', 'NFFT', 'NFFT')); end % [EOF] end function varargout = set(obj,varargin) [varargout{1:nargout}] = signal.internal.signalset(obj,varargin{:}); end function values = getAllowedStringValues(~,prop) % This function gives the the valid string values for object properties. switch prop case 'FrequencySpecification' values = {... 'NFFT' 'FrequencyVector'}; otherwise values = {}; end end end %% public methods end % classdef