【问题标题】:how to create a surface in matlab using interpolation如何使用插值在matlab中创建曲面
【发布时间】: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 进行绘图。
  • 我更新了问题尝试了上述方法,但它给出了错误
  • 没有看到您的实际数据,很难详细说明,但如果xy 是向量(如您的代码x = I.data(:,1);),那么您的z 变量应该是包含长度(Y)行和长度(X)列的矩阵。要转换数据,您可以尝试使用 this 或使用文件交换 [xyz2grid(mathworks.com/matlabcentral/fileexchange/…) 功能。

标签: matlab


【解决方案1】:

试试 griddata

spX = min(x):3:max(x);
spY = min(y):3:max(y); 

[xC,yC] = meshgrid(spX,spY);

zC = griddata(x,y,z,xC,yC);
surf(xC,yC,zC)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2020-09-23
    • 2023-03-22
    • 2015-09-13
    相关资源
    最近更新 更多