delay and sum beamforming

I am new to matlab and am trying to acheive a simulation for delay and sum beamforming. My target is say there are two or more sensors placed in a line with 0.25m distance in between them. I am receiving a signal y(chirp signal) from some source which is placed at 45 degree with respect to the receivers. I am so far created an array for the generated signal which will be send towards the receivers. Now, i have to add respective delay to the antennas other than the refrence receiver. The delay value for the second receiver would be [(0.25*1)cos45]/343 and for 3rd receiver it would be [(0.25*2)cos45]/343 and so on. I am confused as to how to add this delay to the receiving signal's array. Further how will I then get the summed output and how to check steering of the array? please help
close all;
clc;
Fs=100e3;
tf=100e-3;
t=0:1/Fs:1; % Time, sampling frequency is 1kHz
% s = zeros(size(t));
% s = s(:); % Signal in column vector
% s(201:205) = s(201:205) + 1; % Define the pulse
% plot(t,s);
title('Pulse');xlabel('Time (s)');ylabel('Amplitude (V)');
f1=100;
f2=1000;
SLOPE=(f2-f1)/tf;
F=f1+SLOPE*t;
y=1*sin(2*pi*F.*t)';
carrierFreq = 100e3;
% here, the no. of receiving mic are 10
ula = phased.ULA('NumElements',5,'ElementSpacing',0.25);
ula.Element.FrequencyRange = [90e3 110e6];
%assuming signal arrives at the array at an angle of 45 in azimuth and 0 in elevation
inputAngle = [45; 0];
x = collectPlaneWave(ula,y,inputAngle,carrierFreq);
plot(t,x);

Risposte (1)

Honglei Chen
Honglei Chen il 28 Mar 2019

0 voti

Have you tried phased.PhaseShiftBeamformer? That would perform delay and sum beamforming for you.
HTH

5 Commenti

Hi, I read about phased.Timedelaybeamformer and here is the code i am using, can you verify whether it would work or not and how can i steer my array?
ha = phased.ULA('NumElements',5,'ElementSpacing',0.25);
ha.Element.FrequencyRange = [20 200e3];
fs = 100e3; t = 0:1/fs:0.3;
x = chirp(t,10,1,1000);
c = 340; % Wave propagation speed (m/s)
plot(t,x);
hc = phased.WidebandCollector('Sensor',ha,'PropagationSpeed',c,'SampleRate',fs,'ModulatedInput',false);
incidentAngle = [45; 0];
x = step(hc,x.',incidentAngle);
noise = 0.2*randn(size(x));
rx = x;
% beamforming
hbf = phased.TimeDelayBeamformer('SensorArray',ha,'SampleRate',fs,'PropagationSpeed',c,'Direction',incidentAngle);
y = step(hbf,rx);
plot(t,rx(:,3),'r:',t,y);
xlabel('Time'),ylabel('Amplitude'),legend('Original','Beamformed');
Honglei Chen
Honglei Chen il 29 Mar 2019
The code you posted here already performs beamforming, where y is the beamformed output. Is that what you want?
yeah but i am still not able to achieve electrical steering. can you have help me with it?
Honglei Chen
Honglei Chen il 29 Mar 2019
Could you clarify what you want? The beamformer already steered the array, that's how you get the beamformed output. I'm not sure what you mean by "not able to achieve electrical steering"
oh, i didn't know that thanks. But can you tell me how to plot a power(db) vs angle scale which ccould show that the max. power is attained at 45degrees which is my angle

Accedi per commentare.

Richiesto:

il 28 Mar 2019

Commentato:

il 29 Mar 2019

Community Treasure Hunt

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

Start Hunting!

Translated by