散点矩阵图(`plotmatrix`)

散点矩阵图(plotmatrix)

02_柱与散点 5 张 MATLAB R2023b 100 mm 宽 @ 300 dpi

这个方法适合什么

多个变量两两散点排成矩阵,一次扫完所有相关性。适合:多测点电气量的相关性初筛、特征工程前的变量筛查。

电气场景

1 台区五变量散点矩阵

2 光伏逆变器四变量散点矩阵

3 光伏组件四变量散点矩阵

4 储能电池五变量散点矩阵

5 谐波含有率四变量散点矩阵

代码

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

if any(SEL==10)
    rng(41);
    % ---- 10.1 配电台区五变量 ----
    n  = 120;
    b  = 45 + 40*randn(n,1);  b  = min(max(b,10),98);
    ef = 96.8 - 0.012*(b-55).^2/10 + 0.6*randn(n,1);
    pf = 0.94 - 0.0012*(b-50).^2/10 + 0.02*randn(n,1);
    dT = 18 + 0.42*b + 3*randn(n,1);
    th = 2.6 + 0.035*b + 0.6*randn(n,1);
    X  = [b ef pf dT th];
    nm = {'负载率 <i>\beta</i> / %','效率 <i>\epsilon</i> / %', ...
          '功率因数 cos<i>\phi</i>','温升 <i>\Delta T</i> / K', ...
          '<i>U</i>_{THD} / %'};
    f  = ml_fig(PP,150,140);
    figure(f);
    [H,AX,BigAx] = plotmatrix(X);
    for i = 1:5, for j = 1:5
        set(H(i,j),'Color',C(1,:),'MarkerSize',2.5);
        set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
    end, end
    for j = 1:5, xlabel(AX(5,j),ml_tx(nm{j})); end
    for i = 1:5, ylabel(AX(i,1),ml_tx(nm{i})); end
    set(BigAx,'Visible','off');
    save_png(f,FIGD,'台区五变量散点矩阵');

    % ---- 10.2 光伏逆变器四变量 ----
    P  = 20 + 80*rand(n,1);
    U  = 380 + 6*randn(n,1) - 0.02*P;
    I  = 1000*P./(sqrt(3)*U.*0.96);
    fp = 0.97 + 0.012*randn(n,1);
    X  = [P U I fp];
    nm = {'有功 <i>P</i> / kW','电压 <i>U</i> / V','电流 <i>I</i> / A', ...
          '功率因数 cos<i>\phi</i>'};
    f  = ml_fig(PP,120,112);
    figure(f);
    [H,AX,BigAx] = plotmatrix(X);
    for i = 1:4, for j = 1:4
        set(H(i,j),'Color',C(2,:),'MarkerSize',2.5);
        set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
    end, end
    for j = 1:4, xlabel(AX(4,j),ml_tx(nm{j})); end
    for i = 1:4, ylabel(AX(i,1),ml_tx(nm{i})); end
    set(BigAx,'Visible','off');
    save_png(f,FIGD,'光伏逆变器四变量散点矩阵');

    % ---- 10.3 光伏组件四变量 ----
    G  = 50 + 950*rand(n,1);
    Tc = 22 + 0.028*G + 3*randn(n,1);
    Pw = 0.48*G.*(1-0.0038*(Tc-25))/1000*500;
    et = 17.2 - 0.042*(Tc-25) + 0.3*randn(n,1);
    X  = [G Tc Pw et];
    nm = {'辐照度 <i>G</i> / (W/m^{2})','组件温度 <i>T</i> / ℃', ...
          '出力 <i>P</i> / kW','效率 <i>\epsilon</i> / %'};
    f  = ml_fig(PP,138,116);
    figure(f);
    [H,AX,BigAx] = plotmatrix(X);
    for i = 1:4, for j = 1:4
        set(H(i,j),'Color',C(6,:),'MarkerSize',2.5);
        set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
    end, end
    for j = 1:4, xlabel(AX(4,j),ml_tx(nm{j})); end
    for i = 1:4, ylabel(AX(i,1),ml_tx(nm{i})); end
    set(BigAx,'Visible','off');
    save_png(f,FIGD,'光伏组件四变量散点矩阵');

    % ---- 10.4 储能电池五变量 ----
    soc = 10 + 90*rand(n,1);
    pb  = 120*sin(2*pi*soc/100) + 10*randn(n,1);
    tb  = 20 + 0.16*pb + 2*randn(n,1) + 0.06*soc;
    soh = 100 - 0.00035*(3000*(100-soc)/90) - 1.2*randn(n,1);
    cyc = 3000*(100-soc)/90 + 40*randn(n,1);
    X   = [soc pb tb soh cyc];
    nm  = {'SOC / %','功率 <i>P</i> / kW','温度 <i>T</i> / ℃', ...
           'SOH / %','循环次数 <i>N</i>'};
    f  = ml_fig(PP,165,145);
    figure(f);
    [H,AX,BigAx] = plotmatrix(X);
    for i = 1:5, for j = 1:5
        set(H(i,j),'Color',C(3,:),'MarkerSize',2.5);
        set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
    end, end
    for j = 1:5, xlabel(AX(5,j),ml_tx(nm{j})); end
    for i = 1:5, ylabel(AX(i,1),ml_tx(nm{i})); end
    set(BigAx,'Visible','off');
    save_png(f,FIGD,'储能电池五变量散点矩阵');

    % ---- 10.5 谐波含有率四变量 ----
    h3 = 12 + 8*randn(n,1);  h3 = max(h3,2);
    h5 = 6.5 + 0.55*h3 + 2.4*randn(n,1);
    h7 = 3.2 + 0.32*h3 + 1.5*randn(n,1);
    h11 = 1.4 + 0.15*h5 + 0.8*randn(n,1);
    X  = [h3 h5 h7 h11];
    nm = {'<i>I</i>_{3} / %','<i>I</i>_{5} / %','<i>I</i>_{7} / %','<i>I</i>_{11} / %'};
    f  = ml_fig(PP,120,112);
    figure(f);
    [H,AX,BigAx] = plotmatrix(X);
    for i = 1:4, for j = 1:4
        set(H(i,j),'Color',C(4,:),'MarkerSize',2.5);
        set(AX(i,j),'FontSize',8,'FontName',PP.FontEN);
    end, end
    for j = 1:4, xlabel(AX(4,j),ml_tx(nm{j})); end
    for i = 1:4, ylabel(AX(i,1),ml_tx(nm{i})); end
    set(BigAx,'Visible','off');
    save_png(f,FIGD,'谐波含有率四变量散点矩阵');
end

fprintf('\n[完成] 本次运行的函数编号:%s\n', mat2str(SEL));

%% ---------------------- 本地函数 ----------------------
function style_pie3(hp, PP)
%STYLE_PIE3 三维饼图文字:字体 + 沿径向外推,避免压在饼体上
ax = get(hp(1),'Parent');
view(ax,-37.5,20); camzoom(ax,1.12);
tx = findobj(hp,'type','text');
for k = 1:numel(tx)
    p = get(tx(k),'Position');
    p(1) = p(1)*1.26;  p(2) = p(2)*1.26;
    set(tx(k),'Position',p,'FontName',PP.FontEN,'FontSize',9);
end
end


function p = save_png(f, FIGD, nm)
%SAVE_PNG 导出 300dpi PNG + 边距自检 + 关图
p = fullfile(FIGD, ['02_柱与散点_' nm '261107.png']);
print(f, p, '-dpng', '-r300');
ml_chkpng(p, 8);
close(f);
end
posted @ 2026-11-09 00:05  小青蛙电气  阅读(2)  评论(0)    收藏  举报