如何提取空间局部增益值的动态二维网格

问题描述 投票:0回答:1

在提出我的问题之前,我已经对偶极天线进行了建模,并在文档中苦苦挣扎了几天。我想创建一个从参考框架的原点到点(maxWidth,maxHeight)的网格,并由第三个坐标定位。用户使用 x0、y0 和 z0 指定天线相位中心的位置。因此,我们可以有一个平行于 X/Y(恒定 z)或 Y/Z(恒定 x)或 X/Z(恒定 y)轴的平面。我使用名为

mesh_size
的定义步骤运行网格。

这是我的代码:

x0 = 25.0;
y0 = 25.0;
z0 = 25.0;
frequency = 150000.0;
dipoleAntenna = dipole('Length', 3.0, 'Tilt', 90, 'TiltAxis', [0, 0, 1]); % Tilt vertical et polarisation autour de z
pattern(dipoleAntenna, frequency, 'CoordinateSystem', 'polar');
maxGridWidth = 50.0; % Largeur maximale en mètres
maxGridHeight = 50.0; % Hauteur maximale en mètres
mesh_size = 0.1;
num_divisions_width = floor(maxGridWidth / mesh_size);
num_divisions_height = floor(maxGridHeight / mesh_size);
planToDisplay = "X/Z";
thirdcoord = 25.0;
x_coords = 0:mesh_size:maxGridWidth;
y_coords = 0:mesh_size:maxGridHeight;
[X, Y] = meshgrid(x_coords, y_coords);
valueMatrix = zeros(size(X));
for i = 1:length(x_coords)
    for j = 1:length(y_coords)
        if strcmp(planToDisplay, 'X/Y')
            z = thirdcoord - z0;
            x = x_coords(i) - x0;
            y = y_coords(j) - y0;
        elseif strcmp(planToDisplay, 'X/Z')
            y = thirdcoord - y0;
            x = x_coords(i) - x0;
            z = y_coords(j) - z0;
        elseif strcmp(planToDisplay, 'Y/Z')
            x = thirdcoord - x0;
            z = y_coords(j) - z0;
            y = x_coords(i) - y0;
        end
        r = sqrt(x^2 + y^2 + z^2);
    
        if x == 0 && y == 0 && z == 0
            Eeff = 25001;
            valueMatrix(i, j) = Eeff;
        else
            [direct, ~, ~] = pattern(dipoleAntenna, frequency, 'Azimuth', atan2(y, x), 'Elevation', acos(z / sqrt(x^2 + y^2 + z^2)));
            Eeff = sqrt(30*10000.0*2.0*direct)/r;
            valueMatrix(i, j) = Eeff;
        end
    end
end

我尝试在不改变标记的情况下转动天线来改变切割而不改变我的变量,但我得到了非常奇怪的结果:

planToDisplay = 'Y/Z';
if strcmp(planToDisplay, 'X/Y')
    dipoleAntenna = dipole('Length', 3.0, 'Tilt', 0, 'TiltAxis', [0, 0, 1]); % Tilt vertical et polarisation autour de z
    disp(planToDisplay);
elseif strcmp(planToDisplay, 'X/Z')
    dipoleAntenna = dipole('Length', 3.0, 'Tilt', 90, 'TiltAxis', [0, 1, 0]); % Tilt horizontal et polarisation autour de y
    disp(planToDisplay);
elseif strcmp(planToDisplay, 'Y/Z')
    dipoleAntenna = dipole('Length', 3.0, 'Tilt', 90, 'TiltAxis', [1, 0, 0]); % Tilt vertical et polarisation autour de x
    disp(planToDisplay);
end
for i = 1:length(x_coords)
    for j = 1:length(y_coords)
        z = thirdcoord - z0;
        x = x_coords(i) - x0;
        y = y_coords(j) - y0;
[ ... ]
matlab 3d grid 2d mesh
1个回答
0
投票

天线辐射方向图切割或切片可以直接定义为函数

pattern
的输入。

1.-

f = .15e6;    % [Hz]

dp = dipoleCylindrical; 
dp.Length=3   % [m]
dp.Tilt=90       % [degree]
dp.TiltAxis=[0 0 1]

figure(1)
show(dp)

图(2) 模式(dp,f); % 显示 3D 辐射图

2.- 计算 3D 方向性方位角仰角

[D,AZ,EL]=pattern(dp,f); 

D无反射性

AZimuth

EL海拔

3.- 计算并显示 XY 切割

figure(3)
pattern(dp,f,0,1:1:360);    
[D1,AZ1,EL1]=pattern(dp,f,0,1:1:360); 

4.- 计算并显示 YZ 切割

figure(4)
pattern(dp,f,0:1:180,0);         
[D2,AZ2,EL2]=pattern(dp,f,0:1:180,0);  

虽然

dipoleCylindrical
生成一根杆天线,这是我认为您想要的天线,但由于您提到的
3m
长度,命令
dipole
生成一个 MICROSTRIP 偶极天线,这是一种 印刷在 PCB 上的天线。

© www.soinside.com 2019 - 2024. All rights reserved.