垂直极化波由空气)斜入射理想导体平面电场初始振幅为1V/m,入射角为45度。请给出绘制入射电场、磁场,反射电场、磁场以及合成电场幅度图和合成磁场矢量图的matlab代码
时间: 2024-02-06 14:12:57 浏览: 91
以下是绘制入射电场、磁场,反射电场、磁场,合成电场幅度图和合成磁场矢量图的MATLAB代码,其中假设垂直极化波沿着x方向传播:
```matlab
% 假设垂直极化波沿着x方向传播
theta = pi/4; % 入射角为45度
k = 2*pi; % 波矢量
E0 = 1; % 电场初始振幅
% 定义计算区域
x = linspace(-1, 1, 101);
y = linspace(-1, 1, 101);
z = linspace(0, 1, 101);
[X, Y, Z] = meshgrid(x, y, z);
% 计算入射电场和磁场
Ei = E0 * exp(1i * k * (X * sin(theta) + Y * cos(theta))) .* exp(-1i * k * Z * cos(theta));
if theta == 0
Hi = zeros(size(Ei));
else
Hi = (1/(1i * k)) * exp(1i * k * (X * sin(theta) + Y * cos(theta))) .* exp(-1i * k * Z * cos(theta));
end
% 计算反射电场和磁场
Er = -E0 * exp(-1i * k * (X * sin(theta) - Y * cos(theta))) .* exp(-1i * k * Z * cos(theta));
if theta == 0
Hr = zeros(size(Er));
else
Hr = -(1/(1i * k)) * exp(-1i * k * (X * sin(theta) - Y * cos(theta))) .* exp(-1i * k * Z * cos(theta));
end
% 计算合成电场和磁场
Et = Ei + Er;
if theta == 0
Ht = zeros(size(Et));
else
Ht = Hi + Hr;
end
% 绘制入射电场幅度图
figure;
plotxyz = slice(X, Y, Z, abs(Ei), [], [], [0, 0.5, 1]);
set(plotxyz, 'LineStyle', 'none');
xlabel('x');
ylabel('y');
zlabel('z');
title('入射电场幅度图');
% 绘制入射磁场矢量图
figure;
plotxyz = slice(X, Y, Z, real(Hi), [], [], [0, 0.5, 1]);
set(plotxyz, 'LineStyle', 'none');
hold on;
quiver3(X, Y, Z, real(Hi), imag(Hi), zeros(size(Hi)), 'k');
hold off;
xlabel('x');
ylabel('y');
zlabel('z');
title('入射磁场矢量图');
% 绘制反射电场幅度图
figure;
plotxyz = slice(X, Y, Z, abs(Er), [], [], [0, 0.5, 1]);
set(plotxyz, 'LineStyle', 'none');
xlabel('x');
ylabel('y');
zlabel('z');
title('反射电场幅度图');
% 绘制反射磁场矢量图
figure;
plotxyz = slice(X, Y, Z, real(Hr), [], [], [0, 0.5, 1]);
set(plotxyz, 'LineStyle', 'none');
hold on;
quiver3(X, Y, Z, real(Hr), imag(Hr), zeros(size(Hr)), 'k');
hold off;
xlabel('x');
ylabel('y');
zlabel('z');
title('反射磁场矢量图');
% 绘制合成电场幅度图
figure;
plotxyz = slice(X, Y, Z, abs(Et), [], [], [0, 0.5, 1]);
set(plotxyz, 'LineStyle', 'none');
xlabel('x');
ylabel('y');
zlabel('z');
title('合成电场幅度图');
% 绘制合成磁场矢量图
figure;
plotxyz = slice(X, Y, Z, real(Ht), [], [], [0, 0.5, 1]);
set(plotxyz, 'LineStyle', 'none');
hold on;
quiver3(X, Y, Z, real(Ht), imag(Ht), zeros(size(Ht)), 'k');
hold off;
xlabel('x');
ylabel('y');
zlabel('z');
title('合成磁场矢量图');
```
这里用到了MATLAB中的slice和quiver3函数,slice函数可以将三维数据切片并绘制成二维等高线图,而quiver3可以绘制三维矢量图。
阅读全文