MATLAB 阵列天线方向图仿真:波导影响和方向图最大值点分析
///'clear all; //nclose all; //nclc//n//nN = 60; % x方向阵元个数//nM = 60; % y方向阵元个数//nf = 12; % 信号频率 单位GHz//nc = 2.99792 * 10^8; % 光速 单位m/s//nlambda = c / (f * 10^9); % 波长,需要将GHz转换为Hz//nlambdag = lambda * 0.88; % 波导中波长//ndx = lambdag / 5; % x方向单元间距//ndy = lambdag / 5; % y方向单元间距//nphi = linspace(-90, 90, 181); % 方位角范围//ntheta = linspace(-90, 90, 181); % 俯仰角范围//ntheta0 = 30; % 目标俯仰角//nphi0 = 1; % 预先设定的方向,目标方位角//nAmax = 1; % 用于幅值调整//nAmin = 0.5; % 用于幅值调整//n//nx = -(N + 1) / 2 * dx + (1:N)' * dx; % x方向阵元位置//ny = -(M + 1) / 2 * dy + (1:M)' * dy; % y方向阵元位置//n[X, Y] = meshgrid(x, y);//nZ = zeros(size(X)); % z方向阵元位置全为0//n//np = [X(:), Y(:), Z(:)]'; % 阵元的位置信息,每一列是一个阵元的位置//n//n% 在三维图中绘制所有阵元//nfigure(1);//nplot3(p(1,:), p(2,:), p(3,:), 'ko');//nhold on;//nxlabel('//it x');//nylabel('//it y');//nzlabel('//it z');//n//n% 二维全息幅值计算//nA0 = p; % 获取所有辐射点位置坐标信息可以去掉//nP0 = 2 * pi / lambda * [sin(theta0 * pi / 180) * cos(phi0 * pi / 180), sin(theta0 * pi / 180) * sin(phi0 * pi / 180), cos(theta0 * pi / 180)].'; % 目标波除位置信息外信息//nQ0 = P0.' * p; % 目标波全部信息//nR0 = Q0 - 2 * pi / lambdag * sqrt(sum(p(1:2,:).^2, 1)); % 目标波相位信息//nR0(p(2,:) > 0) = R0(p(2,:) > 0) - pi; % 将一半部分补180°相位防止凹陷//n//nM0 = Amax + Amin * cos(R0); % 幅值进行缩放//nM0(M0 > 1) = 1;//nM0(M0 < 1) = 0;//nm0 = M0//nMM0 = M0.' ;% 用于pcaad幅值文件//nMM1 = reshape(MM0, N, M); % 用于绘制黑白图//n//nfigure(5); % 绘制黑白格//n[a, b] = size(MM1);//nMM11 = zeros(a + 1, b + 1);//nMM11(2:a + 1, 1:b) = MM1;//npcolor(flipud(1 - MM11))//ncolormap(gray(2))//naxis square//n//n% 以下为绘制方向图函数程序//nv = zeros(N*M, length(theta)*length(phi));//nfor ii = 1 : length(theta)//n for jj = 1 : length(phi)//n 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].';//n v(:,(ii-1)*length(phi)+jj) = exp(1i * k.' * p); % x方向阵因子//n end//nend//nb = reshape(abs(v.' * M0(:)), length(theta), length(phi)) / sqrt(N * M); % 方向图//n//nB1 = max(abs(b(:))); % 获取在目标方向的最大值用于验证//nB = 20 * log10(abs(b)); % 方向图对数化--dB形式//n//nfigure(2); % 绘制方位角方向//nplot(phi, B(:, theta0), 'k-')//ngrid on, hold on//nxlabel('方位角(deg)'), ylabel('阵列方向图(dB)')//naxis([-90 90 -50 10]); % 可为x轴和y轴设置一个极限范围//n//nfigure(3); % 绘制俯仰角方向图//nplot(theta, B(phi0, :))//ngrid on, hold on//nxlabel('俯仰角(deg)'), ylabel('阵列方向图(dB)')//naxis([-90 90 -50 10]); % 可为x轴和y轴设置一个极限范围//n//nfigure(4); % 绘制3D方向图//nmesh(phi, theta, B)//ntitle('圆阵动态30度指向方向图');//nxlabel('俯仰角/(/circ)');//nylabel('方位角/(/circ)');//nzlabel('阵列方向图(dB)');//naxis([-90 90 -90 90 -50 10]); % 可为x轴和y轴设置一个极限范围//ngrid on//n为什么以上程序中方向图的最大值点的位置不是最开始设置的theta0,phi0位置//n内容:在计算方向图时,使用了波导中的波长lambdag,而不是真实的空间波长lambda。这是因为在计算方向图时,需要考虑到波导对波束的影响,而波导中的波长比真实的空间波长要小。//n//n因此,方向图的最大值点的位置可能会发生变化。如果希望方向图的最大值点位置与预设的theta0和phi0相同,可以去掉计算方向图时使用的波导中的波长lambdag,改用真实的空间波长lambda。
原文地址: https://www.cveoy.top/t/topic/pvjK 著作权归作者所有。请勿转载和采集!