dsp.channelizer acts unexpectedly with oversamplingRatio=4
4 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
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
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Array and Matrix Mathematics についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!