2D Interpolation of data

4 views (last 30 days)
Akarsh Shetty
Akarsh Shetty on 7 Aug 2022
Edited: Akarsh Shetty on 9 Aug 2022
Hi..I was trying to perform a 2D-interpolation for 2 data files. The file AOA0_u600 contains data of nodenumber, x-coordinate, y-coordinate, z-coordinate and pressure.
The file Y-600 contains data of entity id, x-coordinate, y-coordinate and z-coordinate. Both the files contain the data for the same Y-coordinate.
Basically the idea was to interpolate the value of pressure at the values of x and z coordinate (sample points of 1st file) to the values of x and z-coordinate (query points of the 2nd file)
However,when using the interp2 function to interpolate the values, i was recieving the following error
%Error using griddedInterpolant
The grid vectors must be strictly monotonically increasing.
%Error in interp2>makegriddedinterp (line 229)
F = griddedInterpolant(varargin{:});
%Error in interp2 (line 129)
F = makegriddedinterp({X, Y}, V, method,extrap);
Could anyone please guide me as to how to resolve this issue?
clear all;
clc;
fid=fopen('AOA0_u600.txt');
a=textscan(fid, '%f %f %f %f %f', 'HeaderLines', 1);
b=cell2mat(a);
c=sortrows(b,2);
x=c(:,2);
x=x+0.275;
y=c(:,4);
z=c(:,5);
fid =fopen('Y-600.txt');
A=textscan(fid, '%f %f %f %f', 'HeaderLines', 12);
B=cell2mat(A);
C=sortrows(B,2);
X=C(:,2);
X1=X/1000;
Y=C(:,4);
Y1=Y/1000;
D=interp2(x,y,z,X1,Y1);

Accepted Answer

Bruno Luong
Bruno Luong on 7 Aug 2022
Edited: Bruno Luong on 7 Aug 2022
You have scattered data, you should use scatteredInterpolant or similar, not interp2.
  3 Comments
Bruno Luong
Bruno Luong on 8 Aug 2022
Edited: Bruno Luong on 8 Aug 2022
No it is NOT totally correct in 2D it requires Gridded data which is "A set of points that are axis-aligned and ordered".
Such grid data can be generated by meshgrid or ndgrid command with both linear grid points strickly monotonics.
Akarsh Shetty
Akarsh Shetty on 9 Aug 2022
Edited: Akarsh Shetty on 9 Aug 2022
Alright..I'll keep that in mind!
The scatteredInterpolation Function worked for interpolating the scattered data from the file Y-2010.txt to the file Y_2010. However, i couldnt figure out the logic for the for loop for interpolating similar set of files.
Could you please guide me as how to proceed forward
clear all;
clc;
fid=fopen('Y_2010.txt');
a=textscan(fid, '%f %f %f %f %f', 'HeaderLines', 1);
b=cell2mat(a);
a_u=b(1:68,:);
a_l=b(69:end,:);
x_u=a_u(:,2);
x_u=x_u+0.275;
y_u=a_u(:,4);
z_u=a_u(:,5);
x_l=a_l(:,2);
x_l=x_l+0.275;
y_l=a_l(:,4);
z_l=a_l(:,5);
fid =fopen('Y-2010');
A=textscan(fid, '%f %f %f %f', 'HeaderLines', 12);
B=cell2mat(A);
au=B(B(:,4) >= -440.026398,:);
al=B(B(:,4) < -440.026398,:);
X_U=au(:,2);
X1=X_U/1000;
Y_U=au(:,4);
Y1=Y_U/1000;
M=[X1,Y1];
N=sortrows(M,1);
X_L=al(:,2);
X2=X_L/1000;
Y_L=al(1:63,4);
Y2=Y_L/1000;
O=[X2,Y2];
P=sortrows(O,1);
F=scatteredInterpolant(x_u,y_u,z_u);
G=scatteredInterpolant(x_l,y_l,z_l);
vq=F(N(:,1),N(:,2));
wq=G(P(:,1),P(:,2));
plot(x_u,z_u,'-o');
hold on
plot(x_l,z_l,'-r');
hold on
plot(N(:,1),vq);
hold on
plot(P(:,1),wq);
Q=[N,vq];
R=[P,wq];
dlmwrite('Y_2010_I',[Q;zeros(1,3);R],'delimiter','\t','precision','%f');

Sign in to comment.

More Answers (0)

Categories

Find more on Interpolation in Help Center and File Exchange

Products


Release

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!