MATLAB绘制电磁波方程E、H场图像维度不匹配报错优化求助
问题根源
- 语法层面:你未定义变量
x,且theta、z两个数组长度不一致(theta采样数为126,z采样数为101),逐元素运算时尺寸不匹配触发报错。 - 物理逻辑层面:你混淆了入射角
theta的物理意义,theta是入射波的固定参数,不是绘图的自变量,你需要的自变量应该是波的传播方向坐标。
优化后可运行代码
% 固定物理参数定义 theta = pi/6; % 入射角固定为30度,可根据需求调整数值 f = 100; omega = 2*pi*f; lambda = 4000; k = (2*pi)/lambda; beta = k; Ei = 100; eta = 377; % 自由空间波阻抗,单位Ω % 传播方向x采样,共200个采样点 x = 0:1:200; % 电场计算:固定z=0,仅输出x方向分布 electricField = 2*Ei*sin(beta.*x.*sin(theta)); % 磁场计算:幅值为电场除以波阻抗 magneticField = electricField ./ eta; % 初始化动画绘制线 e_line = animatedline('lineWidth',1,'Color','r','DisplayName','电场E'); h_line = animatedline('lineWidth',1,'Color','b','DisplayName','磁场H'); % 坐标轴与视图配置 axis([min(x) max(x) -max(abs(electricField)) max(abs(electricField)) -max(abs(magneticField)) max(abs(magneticField))]); view(45,20); title("电磁波传播"); xlabel('传播方向(x)'); ylabel('电场强度(Y)'); zlabel('磁场强度(Z)'); legend; grid on; hold on; % 逐帧绘制动画 for i=1:length(x) addpoints(e_line, x(i), electricField(i), 0); addpoints(h_line, x(i), 0, magneticField(i)); drawnow pause(0.02); end hold off;
调整说明
- 将入射角
theta改为固定参数,可直接修改数值适配你的入射场景 - 补充了传播坐标
x的定义,简化计算时固定z=0,如需绘制z方向分布可自行扩展采样维度 - 补充了磁场
H的计算逻辑,符合平面波的场量关系 - 修正了动画点的坐标映射,和你标注的坐标轴定义完全匹配
内容的提问来源于stack exchange,提问作者Segmentation fault
相关产品推荐
相关产品推荐

