dsp.channelizer acts unexpectedly with oversamplingRatio=4

조회 수: 1 (최근 30일)
Harold Alexander
Harold Alexander 2021년 5월 13일
답변: Khodour Al Kadry 2021년 7월 14일
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

답변 (1개)

Khodour Al Kadry
Khodour Al Kadry 2021년 7월 14일
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

카테고리

Help CenterFile Exchange에서 Signal Processing Toolbox에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by