2019年4月24日 关于如何把一个三维矩阵里的数据中的一页画成三维图并加密网格。
已经很久没有用过MATLAB了,话说之前也没处理过三维数据。。。所以还是花了一点时间找资料的。废话少说。。。
首先因为某人没有给我要处理的数据,所以先用一个随机函数生成一个相同大小的三维数组。
% 网格内插前
G=rand(5,5,21);%生成一个由随机数组成的G矩阵
x=[1 1 1 1 1 ;2 2 2 2 2 ;3 3 3 3 3 ;4 4 4 4 4 ;5 5 5 5 5 ];
%x和y是网格的坐标,注意网格坐标形式,否则下面可能会报错
y=[1 2 3 4 5 ;1 2 3 4 5 ;1 2 3 4 5 ;1 2 3 4 5 ;1 2 3 4 5 ];
z=G(:,:,1);%z等于G矩阵的第一页
figure
surf(x,y,z)
% 网格内插后
F = griddedInterpolant(x,y,z);%函数用法参考https://ww2.mathworks.cn/help/matlab/ref/griddedinterpolant.html
X = linspace(min(x(:)),max(x(:)));%线性插值100等分好像
Y = linspace(min(y(:)),max(y(:)));
[X,Y] = meshgrid(X,Y);%把X、Y坐标对应的值赋到
Z = F(X,Y);
figure
surf(X,Y,Z)
插值前:
插值后: