2d interpolation of n-dimensional data
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Curtis Wen
el 24 de Ag. de 2021
Comentada: Curtis Wen
el 25 de Ag. de 2021
I have this set of data (simplified)
x = [1 2 3]
y = [3 7 2]
temp = [22 25 23; 33 25 17; 19 25 26];
each X Y coordinate pair corresponds to a column in temp. So (X,Y) = (1,3) -> [22; 33; 19]. I'm trying to setup a 2D interpolation which gives me interpolated values of temp from input XY. My solution which works, but is slow, is to create a scatteredinterpolant for every row of temp ie
int1 = scatteredinterpolant([1 2 3]', [3 7 2]', [22 25 23]')
int2 = scatteredinterpolant([1 2 3]', [3 7 2]', [33 25 17]')
int3 = scatteredinterpolant([1 2 3]', [3 7 2]', [19 25 26]')
and then using the scatteredinterpolants 3 times. My actual dataset of temp has 30000 elements per coordinate pair, so this goes pretty slow. Any suggestions?
0 comentarios
Respuesta aceptada
Sean de Wolski
el 24 de Ag. de 2021
You can just change the Values of one scatteredInterpolant object. It won't have to redo the expensive underlying triangulation of x/y then. Example using zeros and ones for your temp.
s = scatteredInterpolant(rand(3,1),rand(3,1),zeros(3,1))
s(0.3,0.2)
s.Values = ones(3,1) % swap for your second set of values
s(0.3,0.2)
Más respuestas (0)
Ver también
Categorías
Más información sobre Interpolation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!