三维等值线图(`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
posted @ 2026-11-09 17:45  小青蛙电气  阅读(2)  评论(0)    收藏  举报