function plot_3d_grid_data_scatter(nx, ny, nz, dx, dy, dz, data) % 绘制三维网格数据的点云图 % 输入参数: % nx, ny, nz - 各方向的网格数 % dx, dy, dz - 各方向的网格尺寸向量 % data - 物理量数据,维度为(nx, ny, nz) % 计算每个网格点的坐标位置 x = zeros(1, nx); x(1) = dx(1)/2; for i = 2:nx x(i) = x(i-1) + (dx(i-1) + dx(i))/2; end y = zeros(1, ny); y(1) = dy(1)/2; for i = 2:ny y(i) = y(i-1) + (dy(i-1) + dy(i))/2; end z = zeros(1, nz); z(1) = dz(1)/2; for i = 2:nz z(i) = z(i-1) + (dz(i-1) + dz(i))/2; end % 创建所有网格点的坐标矩阵 [X, Y, Z] = ndgrid(x, y, z); % data已经是(nx, ny, nz)格式,与ndgrid输出匹配 % 将数据展平用于scatter3 X_flat = X(:); Y_flat = Y(:); Z_flat = Z(:); data_flat = data(:); % 创建新图形 figure('Position', [100, 100, 800, 600]); % 使用scatter3绘制点云图 scatter3(X_flat, Y_flat, Z_flat, 20, data_flat, 'filled'); colorbar; colormap('jet'); xlabel('X'); ylabel('Y'); zlabel('Z'); title('三维网格物理量分布(点云图)'); axis equal; view(3); grid on; % 添加透明度设置(可选,用于显示内部点) alpha(0.8); end