54 lines
1.2 KiB
Matlab
54 lines
1.2 KiB
Matlab
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 |