Interpolation of 3D arrays against a 1D vector
1 view (last 30 days)
Show older comments
Commented: Ahmad Gad on 25 Aug 2022
I have a video data represented as 3D matrix in the form of Data(x,y,t). Here, x,y represent the pixel number and t is the time. I have the time vector stored in a separate variable. I need to interpolate the variable Data at a new time vector represented by variable t_new to get the new variable Data_new(x,y,t_new). I am using the following code:
n = 20;
m = 60;
t = linspace(0,1,n)';
t_new = linspace(0,1,m)';
Data = rand(50,50,n);
Data_new = permute(interpn(t,permute(Data,[3 2 1]),t_new),[3 2 1]);
% Verification by plotting the time history of selected pixel:
x = 25;
y = 25;
It looks fine to me. but the main concerns I am asking about:
- I had to use permute twice. I am not able to do it without permute. Can I avoid this?
- Is there a faster method to perform this interpolation?
Thanks and best,
Matt J on 25 Aug 2022
Edited: Matt J on 25 Aug 2022
More Answers (0)
Find more on Interpolation 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!