Interpolation of (multidimensional) array
11 views (last 30 days)
Show older comments
Maron Dolling
on 15 Sep 2021
Commented: Maron Dolling
on 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!
0 Comments
Accepted Answer
the cyclist
on 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')
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.
More Answers (0)
See Also
Categories
Find more on Matrix Indexing 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!