www.gusucode.com > dsp 案例源码程序 matlab代码 > dsp/SpectralEstimationUsingFilterBankExample.m

    %% Spectral Estimation Using Filter Bank
% Compare spectral estimates of sinusoids embedded in white Gaussian noise
% using a Hann window based Welch method and filter bank method.

%% Initialization
% Initialize two |dsp.SpectrumEstimator| objects. Specify one estimator to 
% use the Welch-based spectral estimation technique with a Hann window. 
% Specify the other estimator to use an analysis filter bank to perform the 
% spectral estimation. Specify a noisy sine wave input signal
% with 4 sinusoids at 0.16, 0.2, 0.205, and 0.25 cycles/sample. View the 
% spectral estimate using an array plot.
FrameSize = 420;
Fs = 1;
sinegen = dsp.SineWave('SampleRate',Fs,...
    'SamplesPerFrame',FrameSize,...
    'Frequency',[0.16 0.2 0.205 0.25],...
    'Amplitude',[2e-5 1  0.05  0.5]);
NoiseVar = 1e-10;
numAvgs = 8;

hannEstimator = dsp.SpectrumEstimator('PowerUnits','dBm',...
    'Window','Hann','FrequencyRange','onesided',...
    'SpectralAverages',numAvgs,'SampleRate',Fs);

filterBankEstimator = dsp.SpectrumEstimator('PowerUnits','dBm',...
    'Method','Filter bank','FrequencyRange','onesided',...
    'SpectralAverages',numAvgs,'SampleRate',Fs);

spectrumPlotter = dsp.ArrayPlot(...
    'PlotType','Line','SampleIncrement',Fs/FrameSize,...
    'YLimits',[-250,50],'YLabel','dBm',...
    'ShowLegend',true,'ChannelNames',{'Hann window','Filter bank'});

%% Streaming
% Stream the input. Compare the spectral estimates computed using the
% Hann window and the analysis filter bank

for i = 1:1000
    x = sum(sinegen(),2) + sqrt(NoiseVar)*randn(FrameSize,1);
    Pse_hann = hannEstimator(x);
    Pfb = filterBankEstimator(x);
    spectrumPlotter([Pse_hann,Pfb]);
end


%%
% The Hann window misses the peak at 0.205 cycles/sample.
% In addition, the window has a significant spectral leakage that makes the
% peak at 0.16 cycles/sample hard to distinguish, and the noise floor is 
% not correct. 

%%
% The filter bank estimate has a very good resolution with no spectral 
% leakage.