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

求MATLAB实现指定四维度λ参数-NMI散点图的代码

修正后的MATLAB四维度分层散点图代码

以下是可以正确重现目标分层散点图的代码,针对原代码的问题做了关键修正:

lambda1 = [0, 1e-6, 1e-5, 1e-4, 1e-3];  % Z轴:λ₁
lambda2 = [0, 0.01, 0.1, 1, 10, 100, 1000];  % X轴:λ₂
lambda3 = [0, 0.5, 0.75, 1, 1.25, 1.5, 2];  % Y轴:λ₃

% 生成模拟NMI数据(维度对应:lambda3 × lambda2 × lambda1)
NMI = rand(length(lambda3), length(lambda2), length(lambda1)); 

figure;
hold on;
colormap('turbo'); 
scatterSize = 50; % 散点大小

for i = 1:length(lambda1)
    % 生成网格数据
    [L2, L3] = meshgrid(lambda2, lambda3);
    % 提取当前λ₁对应的NMI数据
    layerNMI = NMI(:,:,i);
    
    % 处理X轴(λ₂)的log刻度,避免0的log10错误
    x = log10(max(L2(:), eps)); 
    % 处理Y轴(λ₃)的log刻度,λ₃中的0同样处理
    y = log10(max(L3(:), eps)); 
    % Z轴固定为当前λ₁值
    z = lambda1(i) * ones(size(x)); 
    % 颜色对应NMI数值
    c = layerNMI(:); 
    
    scatter3(x, y, z, scatterSize, c, 'filled');
end

% 修正轴标签对应关系
xlabel('\lambda_2 (log_{10})');
ylabel('\lambda_3 (log_{10})');
zlabel('\lambda_1');

% 设置Z轴为对数刻度,适配λ₁的数值跨度
set(gca, 'ZScale', 'log');
% 避免Z轴log刻度显示异常(处理0值)
set(gca, 'ZLim', [min(lambda1(lambda1>0))/10, max(lambda1)*10]);

colorbar;
caxis([0, 1]); % 统一颜色范围
title('3D Parameter Grid with NMI');
grid on;
view(3);
hold off;

关键修正说明

  • 轴标签匹配:修正原代码X/Y轴标签颠倒的问题,确保λ₂对应X轴、λ₃对应Y轴。
  • log刻度异常处理:对λ₂和λ₃中的0值,用eps(MATLAB最小浮点数)替换后再取log10,避免出现-inf导致的散点丢失。
  • NMI维度索引修正:调整NMI数据的提取维度,确保当前λ₁分层对应正确的NMI数值集合。
  • Z轴显示优化:将Z轴设置为对数刻度,解决λ₁数值跨度大导致的分层重叠问题,同时调整Z轴范围避免0值在log刻度下的显示异常。
  • 颜色一致性:保持所有层的caxis范围统一,确保相同NMI数值对应相同颜色。

内容的提问来源于stack exchange,提问作者icfs22 2024

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:04:58