www.gusucode.com > signal 工具箱matlab源码程序 > signal/+fspecs/@abstractmultibandarbmag/super_validatespecs.m

    function [F,E,A,nfpts,Fs,normFreqFlag] = super_validatespecs(this)
%SUPER_VALIDATESPECS   

%   Copyright 2005-2011 The MathWorks, Inc.

% Cache sampling frequency
normFreqFlag = this.privActualNormalizedFrequencyState;
if normFreqFlag
  Fs = 1;
else
  Fs = this.privFs;
end

% Concatenate do care and don't care regions to form frequency and
% amplitudes vectors.
F = this.B1Frequencies;
A = this.B1Amplitudes;
nfpts = length(F);
if nfpts~=length(A),
    error(message('signal:fspecs:abstractmultibandarbmag:super_validatespecs:InvalidSpecifications'))
end
if any(diff(F)<=0)
  error(message('signal:fspecs:abstractmultibandarbmag:super_validatespecs:InvalidSpecificationsUniqueF'))
end

E = [F(1) F(end)];
for i=2:this.NBands,
    nextfband = this.(sprintf('%s%d%s','B',i,'Frequencies'));
    nextA = this.(sprintf('%s%d%s','B',i,'Amplitudes'));
    nfpts = length(nextfband);
    if nfpts~=length(nextA)
      error(message('signal:fspecs:abstractmultibandarbmag:super_validatespecs:InvalidSpecifications'))
    end
    if any(diff(nextfband)<=0)
      % Frequency points in a band must be unique
       error(message('signal:fspecs:abstractmultibandarbmag:super_validatespecs:InvalidSpecificationsUniqueF'))
    end
    
    if nextfband(1)<F(end)
      error(message('signal:fspecs:abstractmultibandarbmag:super_validatespecs:InvalidSpecificationsDontCareRegion'))
    elseif nextfband(1)==F(end) 
      if nextA(1)~=A(end)
        error(message('signal:fspecs:abstractmultibandarbmag:super_validatespecs:InvalidSpecificationsJunction'))   
      end
      prevbandlength  = length(this.(sprintf('%s%d%s','B',i-1,'Frequencies')));
      if length(nextfband) == 1 && prevbandlength == 1
        error(message('signal:fspecs:abstractmultibandarbmag:super_validatespecs:InvalidSpecificationsAdjSingleBands'))              
      end
    end
    
    F = [F nextfband]; %#ok<*AGROW>
    A = [A nextA];
    if nextfband(1)==F(end),
        % Treat adjacent bands as a single do-care region (for firpm
        % designs only)
        E(end) = F(end);
    else
        E = [E nextfband(1) nextfband(end)];
    end
end

% Force row vectors
nfpts = length(F);
F = F(:).';
A = A(:).';
E = E(:).';

% [EOF]