三维等值线图(`contour3`)
三维等值线图(contour3)
05_场与矢量 5 张 MATLAB R2023b 100 mm 宽 @ 300 dpi
这个方法适合什么
把等值线画在三维空间里,看等值面的空间走向。适合:三维温度场、空间电位分布、需要看等值面高度的场景。
电气场景
1 接地网电位曲面三维等值线

2 开关柜顶面温度三维等值线

3 阀厅地面电场三维等值线

4 电池模组表面温度三维等值线

5 接地网地表电位三维等值线

代码
脚本 p5_field_vector.m 中对应 contour3 的一段,SEL 用于选择只跑某几个方法。
%% ★ contour3 的 Z 是**二维场**(高度即等值线的数值),不是体数据:
%% contour3(X,Y,Z,n) 在 z = Z 的高度上画 Z 的等值线,故这里是「曲面等值线悬空」画法
if any(SEL==3)
% ---- 3.1 接地网电位曲面三维等值线 ----
try
xg = linspace(-30,30,97); yg = linspace(-30,30,97);
[X,Y] = meshgrid(xg,yg);
R = hypot(X,Y);
U = 0.4 + 8.8*exp(-R.^2/430) + 1.7*exp(-((X-14).^2+(Y+9).^2)/130);
LV = 1:1:9;
f = ml_fig(PP,100,90);
ax = ax3(f,true);
contour3(ax,X,Y,U,LV,'LineWidth',0.55);
colormap(ax,parula); clim(ax,[LV(1) LV(end)]);
xlabel(ml_tx('站区 <i>x</i> / m'));
ylabel(ml_tx('站区 <i>y</i> / m'));
zlabel(ml_tx('电位 <i>U</i> / kV'));
xlim(ax,[-30 30]); ylim(ax,[-30 30]); zlim(ax,[0 10]);
cb3(ax,PP,'电位 <i>U</i> / kV');
save_png(f,FIGD,'接地网电位曲面三维等值线');
catch ME
fprintf('[FAIL] 3-1 %s\n',ME.message); close all
end
% ---- 3.2 开关柜顶面温度三维等值线 ----
try
xg = linspace(0,1.2,97); yg = linspace(0,0.8,81);
[X,Y] = meshgrid(xg,yg);
T = 32 + 26*exp(-((X-0.35)/0.16).^2 - ((Y-0.30)/0.14).^2) ...
+ 12*exp(-((X-0.92)/0.20).^2) .* (1 - 0.3*Y/0.8);
LV = 32:4:60;
f = ml_fig(PP,100,90);
ax = ax3(f,true);
contour3(ax,X,Y,T,LV,'LineWidth',0.55);
colormap(ax,hot); clim(ax,[LV(1) LV(end)]);
xlabel(ml_tx('柜宽 <i>x</i> / m'));
ylabel(ml_tx('柜深 <i>y</i> / m'));
zlabel(ml_tx('顶面温度 <i>T</i> / °C'));
xlim(ax,[0 1.2]); ylim(ax,[0 0.8]); zlim(ax,[28 62]);
cb3(ax,PP,'顶面温度 <i>T</i> / °C');
save_png(f,FIGD,'开关柜顶面温度三维等值线');
catch ME
fprintf('[FAIL] 3-2 %s\n',ME.message); close all
end
% ---- 3.3 阀厅地面电场三维等值线 ----
try
xg = linspace(0,8,97); yg = linspace(0,6,73);
[X,Y] = meshgrid(xg,yg);
E = 0.35 + 1.90*exp(-((X-2.4).^2+(Y-3.0).^2)/2.2) ...
+ 1.20*exp(-((X-6.0).^2+(Y-3.0).^2)/1.6);
LV = 0.4:0.3:3.1;
f = ml_fig(PP,100,90);
ax = ax3(f,true);
contour3(ax,X,Y,E,LV,'LineWidth',0.55);
colormap(ax,sky); clim(ax,[LV(1) LV(end)]);
xlabel(ml_tx('阀厅长度 <i>x</i> / m'));
ylabel(ml_tx('阀厅宽度 <i>y</i> / m'));
zlabel(ml_tx('电场强度 <i>E</i> / (kV/m)'));
xlim(ax,[0 8]); ylim(ax,[0 6]); zlim(ax,[0 3.4]);
cb3(ax,PP,'电场强度 <i>E</i> / (kV/m)');
save_png(f,FIGD,'阀厅地面电场三维等值线');
catch ME
fprintf('[FAIL] 3-3 %s\n',ME.message); close all
end
% ---- 3.4 电池模组表面温度三维等值线 ----
try
xg = linspace(0,0.60,97); yg = linspace(0,0.40,81);
[X,Y] = meshgrid(xg,yg);
T = 26 + 13*exp(-((X-0.15)/0.09).^2 - ((Y-0.20)/0.10).^2) ...
+ 8*exp(-((X-0.45)/0.10).^2 - ((Y-0.20)/0.10).^2);
LV = 26:2:40;
f = ml_fig(PP,100,90);
ax = ax3(f,true);
contour3(ax,X,Y,T,LV,'LineWidth',0.55);
colormap(ax,turbo); clim(ax,[LV(1) LV(end)]);
xlabel(ml_tx('模组长度 <i>x</i> / m'));
ylabel(ml_tx('模组宽度 <i>y</i> / m'));
zlabel(ml_tx('表面温度 <i>T</i> / °C'));
xlim(ax,[0 0.60]); ylim(ax,[0 0.40]); zlim(ax,[24 42]);
cb3(ax,PP,'表面温度 <i>T</i> / °C');
save_png(f,FIGD,'电池模组表面温度三维等值线');
catch ME
fprintf('[FAIL] 3-4 %s\n',ME.message); close all
end
% ---- 3.5 接地网地表电位三维等值线 ----
try
xg = linspace(0,40,97); yg = linspace(0,40,97);
[X,Y] = meshgrid(xg,yg);
U = 95./sqrt((X-10).^2+(Y-10).^2+0.60) ...
+ 95./sqrt((X-30).^2+(Y-10).^2+0.60) ...
+ 95./sqrt((X-10).^2+(Y-30).^2+0.60) ...
+ 95./sqrt((X-30).^2+(Y-30).^2+0.60);
LV = 20:20:200;
f = ml_fig(PP,100,90);
ax = ax3(f,true);
contour3(ax,X,Y,U,LV,'LineWidth',0.55);
colormap(ax,parula); clim(ax,[LV(1) LV(end)]);
xlabel(ml_tx('站区 <i>x</i> / m'));
ylabel(ml_tx('站区 <i>y</i> / m'));
zlabel(ml_tx('地表电位 <i>U</i> / V'));
xlim(ax,[0 40]); ylim(ax,[0 40]); zlim(ax,[0 240]);
cb3(ax,PP,'地表电位 <i>U</i> / V');
save_png(f,FIGD,'接地网地表电位三维等值线');
catch ME
fprintf('[FAIL] 3-5 %s\n',ME.message); close all
end
end

浙公网安备 33010602011771号