Receiving a signal with Phased Array

12 views (last 30 days)
Ofir I
Ofir I on 8 Jan 2023
Answered: Supraja on 2 Jun 2023
Hi all,
I am trying to generate a signal, for instance a pure sine at 1 GHz, and see how that signal is received with different weights.
For that purpose, I found this documentation that creates weights aimed nulling a specific angle:
Now I want to use these weights in a phased array receiver, and plot the received signal before and after using these weights.
Assume I am using a uniform linear array with 10 elements:
ula = phased.ULA(10,lambda/2);
ula.Element.BackBaffled = true;
and that I already have the set of weights - 'w'
I could only find the objects like phased.Collector or collectPlaneWavem, which gets as input the signal magnitude over time, but both output the (time x elements) complex matrix.
How can I convert this matrix into an actual signal - magnitude over time?
Or is there any other way that I can compare how a signal is received before and after I changed the phased array antennas weights?
Thanks!

Answers (1)

Supraja
Supraja on 2 Jun 2023
To convert a matrix into an actual signal, the matrix elements can be considered as the magnitude of the signal over time. You can use the "plot" or "stem" function in MATLAB to visualize the signal. Following are the steps to create a magnitude over time signal from the given matrix in MATLAB:
1. Define a time axis for the signal. Depending on the sampling rate, you can determine the time axis as followss
`time_axis = 0:1/fs:(size(mag_matrix, 1)-1)/fs;`
Here, `fs` is the sampling rate of the signal.
2. Plot the signal using the "plot" or "stem" function in MATLAB. For example, using the "stem" function, you can visualize the magnitude over time.
`stem(time_axis, mag_matrix);`
3. Add axis labels, plot title, and legend if desired:
xlabel('Time (s)');
ylabel('Magnitude');
title('Magnitude over time');
legend('Channel 1', 'Channel 2', ..., 'Channel n');
Here, `n` is the number of channels in the input matrix.
Here is an example code snippet that demonstrates these steps
% Define the input matrix
mag_matrix = rand(1000, 5);
% Define the time axis
fs = 1000; % Sampling rate
time_axis = 0:1/fs:(size(mag_matrix, 1)-1)/fs;
% Plot the magnitude over time
stem(time_axis, mag_matrix);
% Add axis labels, plot title and legend
xlabel('Time (s)');
ylabel('Magnitude');
title('Magnitude over time');
legend('Channel 1', 'Channel 2', 'Channel 3', 'Channel 4', 'Channel 5');
This will create a stem plot of the magnitude over time of each channel in the input matrix with the corresponding axis labels and title.
For further reference you can follow the stem function documentation: https://www.mathworks.com/help/matlab/ref/stem.html?searchHighlight=stem&s_tid=srchtitle_stem_1

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!