【发布时间】:2020-03-12 02:10:45
【问题描述】:
我有 x y z 数据,如下所示:
如何使用 matlab 中的 z 值创建跨线的曲面(插值曲面)?
我尝试了这种方法,但出现以下错误:
[fn,pn] = uigetfile('*.xyz','Open the file');
I = importdata([pn,fn], ',', 16);
x = I.data(:,1);
y = I.data(:,2);
z = I.data(:,3);
%%
spX = min(x):3:max(x);
spY = min(y):3:max(y);
[xC,yC] = meshgrid(spX,spY);
Vq = interp2(x,y,z,xC,yC);
使用 griddedInterpolant 时出错 网格向量必须严格单调递增。
interp2 中的错误>makegriddedinterp(第 229 行) F = griddedInterpolant(varargin{:});
interp2 中的错误(第 129 行) F = makegriddedinterp({X, Y}, V, method,extrap);
【问题讨论】:
-
您查看过interp2 文档吗?有一个完全一样的例子。您拥有
[x,y,z]数据并使用interp2函数进行插值以获得更精细的网格并使用surf进行绘图。 -
我更新了问题尝试了上述方法,但它给出了错误
-
没有看到您的实际数据,很难详细说明,但如果
x和y是向量(如您的代码x = I.data(:,1);),那么您的z变量应该是包含长度(Y)行和长度(X)列的矩阵。要转换数据,您可以尝试使用 this 或使用文件交换 [xyz2grid(mathworks.com/matlabcentral/fileexchange/…) 功能。
标签: matlab