3D interpolation using interp1

5 vues (au cours des 30 derniers jours)
Emma Smolders
Emma Smolders le 12 Nov 2021
Commenté : Emma Smolders le 12 Nov 2021
Dear all,
I have a velocity field in a lake whichis contructed on a (m,n,k) grid where m is the number of grid points in the x-direction, n in the y-direction and k the number of vertical layers. At the moment, I have 100 layers (so k = 100) distributed over a depth of 350 meters. I would like to interpolate this velocity field to 200 layers in the vertical distributed over the same depth. I thought the following piece of code would work, where z1 is a (1,100) array containing depth layers and z2 a (1,200) array containing 200 depth layers on which I would like the velocity field to be interpolated. This code does not work since I get the error that X and V must be of the same length. But they are of the same length, right? Does anyone know how to code this properly?
Many thanks in advance!
for i = 1:m
for j = 1:n
interp_u = interp1(z1, u(i, j, :), z2, 'linear')
end
end

Réponse acceptée

Matt J
Matt J le 12 Nov 2021
Modifié(e) : Matt J le 12 Nov 2021
F=griddedInterpolant({1:m,1:n,z1},u);
interp_u=F({1:m,1:n,z2});
  1 commentaire
Emma Smolders
Emma Smolders le 12 Nov 2021
Thanks! I think this is working :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Interpolation dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by