How to convert y data for equal intervals of x, z to z data for equal intervals of x, y
4 ビュー (過去 30 日間)
古いコメントを表示
x and z are tables of size 100x100 using meshgrid.
Values outside the required range of z are treated as NaN.
The y value is the result of the calculation using x and z.
If the result of the calculation for z is a complex number, NaN is processed.
What code should I use to find z for equally spaced x, y?
An error occurs when trying to do 3D interpolation.
I attached the variable as an attachment.
I would greatly appreciate your help.
1 件のコメント
Madheswaran
2024 年 11 月 12 日
@Yunjai Could you also post the minimal version of code you were trying to run and the error you were facing?
採用された回答
Bruno Luong
2024 年 11 月 12 日
移動済み: Bruno Luong
2024 年 11 月 12 日
Rescaling is important when doing scatering interpolation. Avoid unstable extrapolation
load example.mat
XYZ = [X(:), Y(:), Z(:)];
XYZ = rmmissing(XYZ,1);
[minx, maxx] = bounds(X, "all");
[miny, maxy] = bounds(Y, "all");
XN = (XYZ(:,1)-minx)/(maxx-minx);
YN = (XYZ(:,2)-miny)/(maxy-miny);
F = scatteredInterpolant(YN, XN, XYZ(:,3) , 'linear', 'none');
[XNG, YNG] = deal(linspace(0, 1));
ZG = F({YNG, XNG});
XG = minx + XNG*(maxx-minx);
YG = miny + YNG*(maxy-miny);
figure
surf(XG, YG, ZG);
shading interp
hold on
contourf(XG, YG, ZG, 'Zlocation',-1.3)
colorbar
plot3(X(:),Y(:),Z(:),'.b')
view(15,50)
1 件のコメント
Bruno Luong
2024 年 11 月 12 日
移動済み: Bruno Luong
2024 年 11 月 12 日
If you want exptrapolation I recommend using either the legacy griddata 'v4' or John d'Erric Inpaint_NaNs
その他の回答 (1 件)
Walter Roberson
2024 年 11 月 12 日
移動済み: Walter Roberson
2024 年 11 月 12 日
load example.mat
XYZ = [X(:), Y(:), Z(:)];
XYZ = rmmissing(XYZ,1);
F = scatteredInterpolant(XYZ(:,1), XYZ(:,2), XYZ(:,3));
[minx, maxx] = bounds(X, "all");
[miny, maxy] = bounds(Y, "all");
[XG, YG] = ndgrid(linspace(minx, maxx), linspace(miny, maxy));
ZG = F(XG, YG);
surf(XG, YG, ZG);
shading interp
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Surface and Mesh Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!