- Defining the simulation parameters and generating the signal.
- Simulation of signal propagation and adding noise
- Creating antenna array and calculating steering directions
Simple model of antenna array receiver
31 ビュー (過去 30 日間)
古いコメントを表示
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
0 件のコメント
回答 (1 件)
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:
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.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!