clear all;
close all;
clc

N = 60; % x方向阵元个数
M = 60; % y方向阵元个数
f = 12; % 信号频率 单位GHz
c = 2.99792 * 10^8; % 光速 单位m/s
lambda = c / (f * 10^9); % 波长,需要将GHz转换为Hz
lambdag = lambda * 0.88; % 波导中波长
dx = lambdag / 5; % x方向单元间距
dy = lambdag / 5; % y方向单元间距
phi = linspace(-90, 90, 181); % 方位角范围
theta = linspace(-90, 90, 181); % 俯仰角范围
theta0 = 45; % 目标俯仰角
phi0 = 1; % 预先设定的方向,目标方位角
Amax = 1; % 用于幅值调整
Amin = 0.5; % 用于幅值调整

x = -(N + 1) / 2 * dx + (1:N)' * dx; % x方向阵元位置
y = -(M + 1) / 2 * dy + (1:M)' * dy; % y方向阵元位置
[X, Y] = meshgrid(x, y);
Z = zeros(size(X)); % z方向阵元位置全为0

p = [X(:), Y(:), Z(:)]'; % 阵元的位置信息,每一列是一个阵元的位置

% 在三维图中绘制所有阵元
figure(1);
plot3(p(1,:), p(2,:), p(3,:), 'ko');
hold on;
xlabel('\it x');
ylabel('\it y');
zlabel('\it z');

% 二维全息幅值计算
A0 = p; % 获取所有辐射点位置坐标信息可以去掉
P0 = 2 * pi / lambda * [sin(theta0 * pi / 180) * cos(phi0 * pi / 180), sin(theta0 * pi / 180) * sin(phi0 * pi / 180), cos(theta0 * pi / 180)].'; % 目标波除位置信息外信息
Q0 = P0.' * p; % 目标波全部信息
R0 = Q0 - 2 * pi / lambdag * sqrt(sum(p.^2, 1)); % 目标波相位信息
R0(p(2,:) > 0) = R0(p(2,:) > 0) + pi; % 将一半部分补180°相位防止凹陷

M0 = Amax + Amin * cos(R0); % 幅值进行缩放
M0(M0 > 1) = 1;
M0(M0 < 1) = 0;

MM0 = M0.'; % 用于pcaad幅值文件
MM1 = reshape(MM0, N, M); % 用于绘制黑白图

figure(5); % 绘制黑白格
[a, b] = size(MM1);
MM11 = zeros(a + 1, b + 1);
MM11(2:a + 1, 1:b) = MM1;
pcolor(flipud(1 - MM11))
colormap(gray(2))
axis square

% 以下为绘制方向图函数程序
v = zeros(N*M, length(theta)*length(phi));
for ii = 1 : length(theta)
    for jj = 1 : length(phi)
        k = 2 * pi / lambda * [sin(theta(ii) * pi / 180) * cos(phi(jj) * pi / 180) + lambda / lambdag, sin(theta(ii) * pi / 180) * sin(phi(jj) * pi / 180) + lambda / lambdag, 0].';
        v(:,(ii-1)*length(phi)+jj) = exp(-1i * k.' * p); % x方向阵因子
    end
end
b = reshape(abs(v.' * M0(:)), length(theta), length(phi)) / sqrt(N * M); % 方向图

B1 = max(abs(b(:))); % 获取在目标方向的最大值用于验证
B = 20 * log10(abs(b)); % 方向图对数化--dB形式

figure(2); % 绘制方位角方向
plot(phi, B(:, theta0), 'k-')
grid on, hold on
xlabel('方位角(deg)'), ylabel('阵列方向图(dB)')
axis([-90 90 -50 0]); % 可为x轴和y轴设置一个极限范围

figure(3); % 绘制俯仰角方向图
plot(theta, B(phi0, :))
grid on, hold on
xlabel('俯仰角(deg)'), ylabel('阵列方向图(dB)')
axis([-90 90 -50 0]); % 可为x轴和y轴设置一个极限范围

figure(4); % 绘制3D方向图
mesh(phi, theta, B)
title('圆阵动态30度指向方向图');
xlabel('俯仰角/(\circ)');
ylabel('方位角/(\circ)');
zlabel('阵列方向图(dB)');
axis([-90 90 -90 90 -50 0]); % 可为x轴和y轴设置一个极限范围
grid on

本文介绍了如何使用Matlab仿真二维平面阵列天线的全息方向图,并给出了完整的Matlab代码和仿真结果。通过调整代码中的参数,可以仿真不同阵元数量、不同阵元间距以及不同目标角度的二维平面阵列天线方向图。


原文地址: https://www.cveoy.top/t/topic/fxZY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录