Interpolation of (multidimensional) array

11 vues (au cours des 30 derniers jours)
Maron Dolling
Maron Dolling le 15 Sep 2021
Commenté : Maron Dolling le 16 Sep 2021
Does anybody know a proper way on how to interpolate an array so, that i can get from something like
[0, 0, 0, 4, 0, 0, 7, 0, 0, 0]
to
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
?
Can one extrapolate this to e.g. a 3D array?
Thanks in advance!

Réponse acceptée

the cyclist
the cyclist le 15 Sep 2021
So, this is a somewhat strange "interpolation" (and extrapolation) problem. It requires certain assumptions to leap from your data to the result. Are you saying that your data are effectively the following?
y = [4 7];
x = [4 7]; % Inferred because the non-zero values of y occur at the 4th and 7th position
And, are you saying that your data exist at x values of 1:10, because of the length of your original vector?
And, are you saying that you want to linearly extrapolate outside the range 4:7?
If all of that is true, then I guess this does what you want.
data = [0, 0, 0, 4, 0, 0, 7, 0, 0, 0];
x = find(data);
y = data(x);
xq = 1:length(data);
yq = interp1(x,y,xq,'linear','extrap')
yq = 1×10
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000
But this solution hinges on the fact that the element positions (1st element, 2nd element, and so on) are equivalent to the data values, which is really strange. So, I have my doubts that this will achieve what you want in your actual real-life problem.
  1 commentaire
Maron Dolling
Maron Dolling le 16 Sep 2021
Sorry, didn't anticipate that my minimal example may be that misunderstandable. But your answer helps a lot, I figured out a good solution.
Just for your understanding, I was trying to calculate a 3D displacement field for an image volume by knowing only two (or a few) distorted surfaces and interpolating linearly along a certain dimension. But I just didn't find a way around a computational heavy loop.
Thanks a lot!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by