锥形矢量图(`coneplot`)

锥形矢量图(coneplot)

05_场与矢量 5 张 MATLAB R2023b 100 mm 宽 @ 300 dpi

这个方法适合什么

三维锥体表示矢量,密集区域也不会糊成一片。适合:三维矢量场密集采样、漏磁场、空间电场的方向分布。

电气场景

1 球隙电场圆锥矢量

2 变压器漏磁圆锥矢量

3 变电站风速圆锥矢量

4 接地体散流圆锥矢量

5 开关柜热流圆锥矢量

代码

脚本 p5_field_vector.m 中对应 coneplot 的一段,SEL 用于选择只跑某几个方法。

if any(SEL==9)
    % ---- 9.1 球隙电场圆锥矢量 ----
    try
        [X,Y,Z,U,V,W] = gen_gap_E(5,4,4);

        f  = ml_fig(PP,100,90);
        ax = ax3(f,false);
        cone_plot3(ax,X,Y,Z,U,V,W,0.38,C(1,:));
        xlabel(ml_tx('横向距离 <i>x</i> / m'));
        ylabel(ml_tx('纵向距离 <i>y</i> / m'));
        zlabel(ml_tx('高度 <i>z</i> / m'));
        xlim(ax,[0 4]); ylim(ax,[0 3]); zlim(ax,[0 3]);
        save_png(f,FIGD,'球隙电场圆锥矢量');
    catch ME
        fprintf('[FAIL] 9-1 %s\n',ME.message); close all
    end

    % ---- 9.2 变压器漏磁圆锥矢量 ----
    try
        xg = linspace(0,2.0,5); yg = linspace(0,1.6,4); zg = linspace(0,1.2,4);
        [X,Y,Z] = meshgrid(xg,yg,zg);
        RR = (X-1.00).^2 + (Y-0.80).^2 + 0.06;
        Bx = -3.6*(Y-0.80)./RR;
        By =  3.6*(X-1.00)./RR;
        Bz =  0.20 + 0.10*(Z/1.2);

        f  = ml_fig(PP,100,90);
        ax = ax3(f,false);
        cone_plot3(ax,X,Y,Z,Bx,By,Bz,0.45,C(2,:));
        xlabel(ml_tx('铁心宽度方向 <i>x</i> / m'));
        ylabel(ml_tx('铁心厚度方向 <i>y</i> / m'));
        zlabel(ml_tx('高度 <i>z</i> / m'));
        xlim(ax,[0 2]); ylim(ax,[0 1.6]); zlim(ax,[0 1.2]);
        save_png(f,FIGD,'变压器漏磁圆锥矢量');
    catch ME
        fprintf('[FAIL] 9-2 %s\n',ME.message); close all
    end

    % ---- 9.3 变电站风速圆锥矢量 ----
    try
        [X,Y,Z,U,V,W] = gen_wind(5,4,4);

        f  = ml_fig(PP,100,90);
        ax = ax3(f,false);
        cone_plot3(ax,X,Y,Z,U,V,W,0.50,C(4,:));
        xlabel(ml_tx('站区长度 <i>x</i> / m'));
        ylabel(ml_tx('站区宽度 <i>y</i> / m'));
        zlabel(ml_tx('高度 <i>z</i> / m'));
        xlim(ax,[0 40]); ylim(ax,[0 30]); zlim(ax,[0 18]);
        save_png(f,FIGD,'变电站风速圆锥矢量');
    catch ME
        fprintf('[FAIL] 9-3 %s\n',ME.message); close all
    end

    % ---- 9.4 接地体散流圆锥矢量 ----
    try
        xg = linspace(-8,8,5); yg = linspace(-8,8,5); zg = linspace(-5,0,4);
        [X,Y,Z] = meshgrid(xg,yg,zg);
        dx = X; dy = Y; dz = Z + 0.8;
        RR = sqrt(dx.^2+dy.^2+dz.^2) + 0.50;
        JM = 900./(4*pi*RR.^2);
        U = JM.*dx./RR; V = JM.*dy./RR; W = JM.*dz./RR;

        f  = ml_fig(PP,100,90);
        ax = ax3(f,false);
        cone_plot3(ax,X,Y,Z,U,V,W,0.45,C(5,:));
        xlabel(ml_tx('站区 <i>x</i> / m'));
        ylabel(ml_tx('站区 <i>y</i> / m'));
        zlabel(ml_tx('土壤深度 <i>z</i> / m'));
        xlim(ax,[-8 8]); ylim(ax,[-8 8]); zlim(ax,[-5 0]);
        save_png(f,FIGD,'接地体散流圆锥矢量');
    catch ME
        fprintf('[FAIL] 9-4 %s\n',ME.message); close all
    end

    % ---- 9.5 开关柜热流圆锥矢量 ----
    try
        [X,Y,Z,QX,QY,QZ] = gen_cab_q(5,4,6);

        f  = ml_fig(PP,100,90);
        ax = ax3(f,false);
        cone_plot3(ax,X,Y,Z,QX,QY,QZ,0.45,C(3,:));
        xlabel(ml_tx('柜宽 <i>x</i> / m'));
        ylabel(ml_tx('柜深 <i>y</i> / m'));
        zlabel(ml_tx('柜高 <i>z</i> / m'));
        xlim(ax,[0 1.2]); ylim(ax,[0 0.8]); zlim(ax,[0 1.8]);
        save_png(f,FIGD,'开关柜热流圆锥矢量');
    catch ME
        fprintf('[FAIL] 9-5 %s\n',ME.message); close all
    end
end
posted @ 2026-11-09 17:45  小青蛙电气  阅读(3)  评论(0)    收藏  举报