How to convert y data for equal intervals of x, z to z data for equal intervals of x, y
50 views (last 30 days)
Show older comments
Yunjai
on 12 Nov 2024 at 1:19
Moved: Bruno Luong
on 12 Nov 2024 at 11:19
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 Comment
Madheswaran
on 12 Nov 2024 at 1:52
@Yunjai Could you also post the minimal version of code you were trying to run and the error you were facing?
Accepted Answer
Bruno Luong
on 12 Nov 2024 at 7:30
Moved: Bruno Luong
on 12 Nov 2024 at 11:18
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 Comment
Bruno Luong
on 12 Nov 2024 at 10:50
Moved: Bruno Luong
on 12 Nov 2024 at 11:19
If you want exptrapolation I recommend using either the legacy griddata 'v4' or John d'Erric Inpaint_NaNs
More Answers (1)
Walter Roberson
on 12 Nov 2024 at 3:36
Moved: Walter Roberson
on 12 Nov 2024 at 3:36
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 Comments
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!