文章目录
- 想法
- 代码
- 目前啥样
想法
参考论文Beam Focusing for Near-Field Multiuser MIMO Communications,可视化beam focusing效应
代码
clc;
clear;% 网格范围
D = 1; % 整个均匀平面阵列的孔径
lambda = 1e-2; % 波长0.01m,单位:米 30GhzN_d = floor(2 * D / lambda); % 垂直方向的阵元数 600
N_e = floor(2 * D / lambda); % 水平方向的阵元数 600
spacing = D / N_d;x_range = -20:0.25:20; %* spacing - D / 2 ;
y_range = -20:0.25:20; %* spacing - D / 2 ;% 生成网格四
[X, Y] = meshgrid(x_range, y_range);
% 计算每个点的信号强度
signal_strength = zeros(numel(x_range),numel(y_range));for x_index = 1:numel(x_range)x_b = x_range(x_index);for y_index = 1:numel(y_range)y_b = y_range(y_index);signal_strength(x_index,y_index) = NearFieldFDA2D(x_b,y_b,D,lambda);fprintf('测量点的横坐标%g,纵坐标%g\n',x_b,y_b);end
end% 绘制彩色图
figure;
imagesc(x_range, y_range, signal_strength);
title('xy平面近场信号强度图');
xlabel('X轴位置');
ylabel('Y轴位置');
colorbar; % 添加颜色条
函数
function SignalPower_xbyb = NearFieldFDA2D(x_b, y_b, D, lambda)
% 定义参数和变量
N_d = floor(2 * D / lambda); % 垂直方向的阵元数 600
N_e = floor(2 * D / lambda); % 水平方向的阵元数 600
spacing = D / N_d;
M = 2; % 用户数
b = 2; % Boresight gain参数
% x_b = 5; % 用户 Bob 的 x 坐标
% y_b = 5; % 用户 Bob 的 y 坐标
z_b = 0; % 用户 Bob 的 z 坐标k = 2 * pi / lambda; % 波数
alpha_c = 1.2;
beta_c = 827.67;% 生成信道系数
% rho = rand(N_d, N_e); % 元件位置
A_b = zeros(N_d, N_e);
A_w = zeros(N_d, N_e);
s = randn(N_d, N_e); % 模拟发送信号SignalPower_xbyb = 0;for i = 1:N_dfor l = 1:N_e% rho(i, l) = p_i_l = [(i - 1) * spacing - D / 2, 0, (l - 1) * spacing - D / 2];% p_i_l = [0, (i - 1) * spacing - D / 2, (l - 1) * spacing - D / 2];% 计算用户 Bob 的信道系数p_b = [x_b, y_b, z_b];Theta_i_l_b = calculateTheta(p_i_l, p_b);distance_b_il = norm(p_b - p_i_l); % 计算距离 |p_m - p_i_l|phase_b_il = exp(-1i * k * distance_b_il); % 计算相位 e^{-j*k*|p_m - p_i_l|}A_b(i, l) = sqrt(F(Theta_i_l_b)) * (lambda / (4 * pi * norm(p_b - p_i_l))) * phase_b_il;SignalPower_xbyb = SignalPower_xbyb + A_b(i, l);end
endSignalPower_xbyb = norm(SignalPower_xbyb);end
% 计算辐射函数 F
function F_theta = F(Theta)b = 2; % Boresight gain参数if Theta >= 0 && Theta <= pi/2F_theta = 2 * (b + 1) * cos(Theta)^b;elseF_theta = 0;end
end% 计算信道方向角Theta
function Theta = calculateTheta(p_i_l, p)delta_x = p(1) - p_i_l(1);delta_y = p(2) - p_i_l(2);delta_z = p(3) - p_i_l(3);Theta = atan2(delta_z, sqrt(delta_x^2 + delta_y^2));
end
目前啥样
目前仅仅考虑了所有天线向各个方向等功率发送,也就是目前还没有针对某一个用户的beam focusing,这一点的实现需要后续专门设计优化算法,可以这么理解: 是beamforming矩阵 W \mathbf{W} W的存在让波束聚焦在一个具体的位置,目前代码中仅仿真了近场信道,波束赋形矩阵 W \mathbf{W} W等价于单位阵。