Simple model of antenna array receiver

조회 수: 16 (최근 30일)
Piotr
Piotr 2024년 1월 3일
댓글: Piotr 2024년 1월 12일
Hello,
I am looking for some tutorials or guidance about making simulation of simple receiver built with antenna array. I would like to make few cases with different beamfoaming. Let's say I have 16 antennas put equally on square plane.
My idea is to place receiver array in 0,0,0 and 4 transivers somewhere above the receiver. I would like to control each of the antennas and send to them simply modulated signal.
For now I have figured some of the code. Where I should look now? My goal is to check different beamfoaming settings in order to determine which config is the best for finding all the TXs at once. As you can see I try to use there SNR as common variable.
Help and hints much appreciated.
Thanks :)
% Signal
freq = 183.6e6;
mod_freq = 1e3;
time = 1;
sampling = 10e6;
snr = 20;
timer = linspace(0, time, time * sampling);
mod_signal = sin(2 * pi * mod_freq * time);
signal_DABplus = sin(2 * pi * freq * time + mod_signal);
distance = 10000;
damping = 1 / (distance^2);
signal_after = signal_DABplus * damping;
noise = randn(size(signal_after));
noise = noise / sqrt(mean(abs(noise).^2));
power = mean(abs(signal_after).^2);
noise_p = power / (10^(snr/10));
noise = noise * sqrt(noise_p);
signal_noise = signal_after + noise;
tx = [
100, 100, 10000;
-100, -100, 10000;
100, -100, 10000;
-100, 100, 10000
];
ant_num = 16;
directions = zeros(ant_num, 3);
for i = 1:ant_num
direction = tx(mod(i - 1, size(tx, 1)) + 1, :) - [0, 0, 0];
direction = direction / norm(direction);
directions(i, :) = direction;
end
for i = 1:ant_num
signal = signal_noise
beamfoaming = directions(i, :);
receive(signal, beamfoaming, i);
end
for i = 1:ant_num
signal = signal_noise;
beamfoaming = directions(i, :);
received = signal;
signal_p = mean(abs(received).^2);
noise_p = mean(abs(noise).^2);
snr_ant(i) = 10 * log10(signal_p / noise_p);
end
function rx_signal(signal, beamfoaming, tail_nr)
%
end

답변 (1개)

Shreshth
Shreshth 2024년 1월 8일
Hello Piotr,
From your question, I could understand that you are seeking guidance for creating a simple receiver with an antenna array using different beamforming techniques in MATLAB.
Going through the code snippet provided by you, it is understood that you have done the following steps correctly:
  • Defining the simulation parameters and generating the signal.
  • Simulation of signal propagation and adding noise
  • Creating antenna array and calculating steering directions
To further execute your task, you will need to implement functions for beamforming. In the code you have used ‘rx_signal’ function but instead it would be recommended to use the “Phased Array System Toolbox” to create the antenna array and perform beamforming. This includes defining the array geometry, calculating the beamforming weights, and steering the beam towards the transmitters.
To further help you with your simulation, here are a few examples and documentation provided by MathWorks.
This example shows how to model and visualize a variety of antenna array geometries with Phased Array System Toolbox™. https://www.mathworks.com/help/phased/ug/phased-array-gallery.html
Beamforming techniques
Thank you,
Shubham Shreshth.
  댓글 수: 1
Piotr
Piotr 2024년 1월 12일
Hello Shubham,
Thank you for the answer.
I have went through tutorials you have linked and it will be much easier with the toolbox :).
Do you maybe have in mind tutorial covering the last stage of experiment so the simulation? So far I have parameters set and file with antenna array. From this point I assume that I need to make some signal path from transmitter to the array, run simulation and read receivers' parameters.
Should I use communication toolbox?

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

카테고리

Help CenterFile Exchange에서 Antennas, Microphones, and Sonar Transducers에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by