Matlab绘制3D速度数据切片图报错及解决方法求助
解决Matlab slice函数的"Input grid is not a valid MESHGRID"错误
错误原因
你调用meshgrid时搞反了输出变量的顺序,导致生成的网格数据维度不匹配interp3的要求。meshgrid(x,y,z)的输出顺序是X,Y,Z,分别对应输入的x、y、z向量生成的网格矩阵,但你写的是[y,x,z] = meshgrid(y,x,z),这让原本的x、y网格变量被错误赋值,打乱了网格的维度对应关系。
修正方案
把meshgrid的输出变量顺序改回和输入一致,或者用更清晰的变量名区分原始向量和网格矩阵,避免混淆。以下是修正后的完整代码:
% Define the x, y, and z coordinate vectors x_vec = 0:1.95313:1000; y_vec = 0:1.95313:250; z_vec = 0:1.93798:250; % Generate correct 3D grid matrices [X,Y,Z] = meshgrid(x_vec, y_vec, z_vec); % Calculate velocity data u using the grid matrices u = sin(X) + sin(Y) + Z; % Define the slice planes xslice = 0; yslice = 0; zslice = 0; % Create the slice plot with correct grid data slice(X, Y, Z, u, xslice, yslice, zslice); view(3); axis([0 1000 0 250 0 250]); grid on; shading interp; xlabel('X'); ylabel('Y'); zlabel('Z'); title('Slice Plot of 3D Velocity Vector');
关键说明
- 用
x_vec、y_vec、z_vec存储原始坐标向量,X、Y、Z存储网格矩阵,避免变量名冲突导致的逻辑混乱。 meshgrid的输入和输出顺序严格对应,确保生成的网格符合slice和interp3的要求。
内容的提问来源于stack exchange,提问作者Logan
相关产品推荐
相关产品推荐

