Interpolate matrix in 4D
显示 更早的评论
I have a matrix data of size 20,10,20,10.
It is a 3D object that changes across time (10 time points which represent 10 seconds)
I would like to create a smooth transition interpolating values to subdivide those 10 seconds into e.g., 10th of a second, so 100 time points in total.
How to go about this in Matlab?
回答(1 个)
Matt J
2023-3-8
1 个投票
3 个评论
You can also use imresizen from this FEX download,
A=rand(20,10,20,10);
Ainterp=imresizen(A,[1,1,1,10]);
whos A Ainterp
This doesn't subdivide the sample locations, though. It increases the fineness of the sampling without necessarily preserving the original samples.
Tahariet Sharon
2023-3-8
what does the [1,1,1,10] mean?
It means make the 4th dimension 10 times bigger.
I want to preserve the values in A(:,:,:,1) and in A(:,:,:,10), which must be identical to the values in the Ainterp(:,:,:,1) and Ainterp(:,:,:,100). And the new values should be interpolated accordingly.
griddedInterpolant will do that.
A=rand(20,10,20,10);
F=griddedInterpolant(A);
Ainterp=F({1:20,1:10,1:20,linspace(1,10,100)});
whos A Ainterp
类别
在 帮助中心 和 File Exchange 中查找有关 Interpolation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!