You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB绘制电磁波方程E、H场图像维度不匹配报错优化求助

问题根源

  1. 语法层面:你未定义变量x,且theta、z两个数组长度不一致(theta采样数为126,z采样数为101),逐元素运算时尺寸不匹配触发报错。
  2. 物理逻辑层面:你混淆了入射角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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:27:03