dsp.channelizer acts unexpectedly with oversamplingRatio=4
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Signal to be channelized:
Channelizer filter has normalized bandwidth of .16. Channelizer has eight channels. So without oversampling, the fringes of each .16-wide channel signal get aliased into the .125-wide channel bandwidth:
Oversampling by two clears this up nicely:
I would expect oversampling by four to do "even better", with the eight spectra getting skinnier, but no...:
Here's the code:
d=randn(250000, 1);
d=d+randn(250000, 1)*1i;
d=d+.05*exp(1i*2*pi*.10*[1:250000].');
d=d+.08*exp(1i*2*pi*.11*[1:250000].');
d=d+.11*exp(1i*2*pi*.12*[1:250000].');
figure
plot(abs(fftshift(fft(d))))
f = designfilt('lowpassfir', ...
'PassbandFrequency', .16, ...
'StopbandFrequency', .18, ...
'PassbandRipple', 1, ...
'StopbandAttenuation', 60);
for oversampling=[1 2 4]
channelizer=dsp.Channelizer('NumFrequencyBands', 8, ...
'OversamplingRatio', oversampling, ...
'Specification', 'Coefficients', ...
'LowpassCoefficients', f.Coefficients);
channels=channelizer(d);
figure
for channel=1:8
subplot(2,4,channel)
plot(abs(fftshift(fft(channels(:,channel)))))
title(sprintf("Channel %d", channel))
end
sgtitle(sprintf("Oversampling=%d", oversampling))
end
0 Kommentare
Antworten (1)
Khodour Al Kadry
am 14 Jul. 2021
Hi Harold
This is a known issue with dsp.Channelizer, check the following bug report.
The issue is fixed for R2021a, R2020b (Update 3) and R2020a (Update 6).
Please update your MATLAB based on the release you are using. You can follow the steps outlined in the following documentation page to update your MATLAB
0 Kommentare
Siehe auch
Kategorien
Mehr zu Signal Processing Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!