Why is there audible 'clicking / buzzing' in the signal received in a phased.Wid​ebandColle​ctor?

2 views (last 30 days)
I am trying to code a wide band acoustic beam former. I am simulating using swept cosine (chirp) functions.
The samples from the chirp function are fine. However, if I play the signal received at one sensor ( temp(:,3) ) there is an audible clicking.
This clicking is very loud if the NumSubbands in the phased.WidebandCollector is a low value (e.g. 100). If NumSubbands = 40000, there is very little clicking.
Why does this clicking occur? And how is it related to the sampling frequency?
Ideally I would like to sample at fs = 24000, but if I increase the sampling frequency, I need more subbands to prevent audible clicking.
if true
%%Declare Sensors and Array
omniMic = phased.OmnidirectionalMicrophoneElement('FrequencyRange', [20 20e3]);
nEle = 24; %n elements
R = 0.107; %Radius
sUCA = phased.UCA('NumElements', nEle,'Radius', R, 'Element', omniMic);
% Define collector
fs = 20000;
c = 340;
collector = phased.WidebandCollector('Sensor',sUCA,'PropagationSpeed',c,...
'SampleRate',fs,'NumSubbands',40000,'ModulatedInput', false);
%%Define signals
t_tot = 10;
nSamps = t_tot*fs; % Total number of samples
t = 0:1/fs:t_tot; % Time values for every sample -> t_tot
% Cosine Sweeps for incident signals
x1 = chirp(t, 2000, t_tot, 8000); %start t, start f, end t, end f
x2 = chirp(t, 8000, t_tot, 800);
% Angles of incidence [azimuth ; elevation]
angx1 = [-45 ; 0];
angx2 = [0 ; 45];
%%Receive & Collect Signals
sigArray = zeros(nSamps, nEle);
% samples received at each sensor
temp = collector([.4*x1.' 0.01*x2.'], [angx1 angx2]);
spectrogram(temp(:,3),256,250,256,fs,'yaxis');
audioWriter = audioDeviceWriter('SampleRate',fs, ...
'SupportVariableSizeInput', true);
isAudioSupported = (length(getAudioDevices(audioWriter))>1);
play(audioWriter, temp(:,3));
end
  2 Comments
JR
JR on 9 Feb 2018
This is interesting behavior that I'm investigating too. It looks like the signal has not been filtered properly. Looks similar to what I would expect if a square window was used. It also looks like each frame has been adjusted to zero mean. Perhaps this is happening in SubbandCombiner.m somewhere?
Brian LaRocca
Brian LaRocca on 4 Dec 2023
I think I am seeing similar behavior with the phased.WidebandCollector and the phased.WidebandTransmitter and phased.WidebandFreeSpace objects. No matter what I do, I see periodic spike discontinuities in the output of these objects.

Sign in to comment.

Answers (2)

JR
JR on 9 Feb 2018
Edited: JR on 9 Feb 2018
I think this might be a bug in Matlab or it is a case of Mathworks not having implemented the filtering correctly.
It looks like the subband filtering process is indirectly using a rectangular window with no overlap. I'm not sure if there is an option to add overlap and a window to the process anywhere.
In SubbandCombiner.m at lines 285, 289 and 292 there is a reshape process on the framed time domain signal, however, the frames are not windowed nor (afaik) can they be specified to overlap by this point. At those lines the signal has already been filtered in the frequency domain.

Ray Zero
Ray Zero on 24 Apr 2019
Also bothering me for weeks, don't know the function of NumSubbands, can anyone show more info? thanks

Community Treasure Hunt

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

Start Hunting!