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);

답변 (1개)

Honglei Chen
Honglei Chen 2019년 3월 28일

0 개 추천

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

댓글 수: 5

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 2019년 3월 29일
The code you posted here already performs beamforming, where y is the beamformed output. Is that what you want?
Dhananjay Singh
Dhananjay Singh 2019년 3월 29일
yeah but i am still not able to achieve electrical steering. can you have help me with it?
Honglei Chen
Honglei Chen 2019년 3월 29일
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"
Dhananjay Singh
Dhananjay Singh 2019년 3월 29일
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

댓글을 달려면 로그인하십시오.

질문:

2019년 3월 28일

댓글:

2019년 3월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by