Files
3D_EDFM_SIM-X/post processor/plot_3d_grid_data_slice.m
T
2026-03-13 11:24:41 +08:00

52 lines
1.3 KiB
Matlab

function plot_3d_grid_data_slice(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] = meshgrid(x, y, z);
% 注意:meshgrid生成的数组维度顺序为(ny, nx, nz)
% 如果data是(nx, ny, nz),需要转置
data_plot = permute(data, [2, 1, 3]);
% 创建新图形
figure('Position', [100, 100, 800, 600]);
% 使用slice绘制三个正交切面
xslice = [x(round(nx/4)), x(round(nx/2)), x(round(3*nx/4))];
yslice = [y(round(ny/4)), y(round(ny/2)), y(round(3*ny/4))];
zslice = [z(round(nz/4)), z(round(nz/2)), z(round(3*nz/4))];
slice(X, Y, Z, data_plot, xslice, yslice, zslice);
shading interp;
colorbar;
colormap('jet');
xlabel('X');
ylabel('Y');
zlabel('Z');
title('三维网格物理量分布(切片图)');
axis equal;
view(3);
grid on;
end