Spline interpolation of 4D matrix

9 views (last 30 days)
MM on 18 Aug 2022
Commented: MM on 18 Aug 2022
Hello everyone,
I have a 4D matrix A of size 450x450x60x3. This matrix corresponds to images measured at different power levels, B. Where each pixel in A was measured with a different powerlevel. So I have a another matrix B of size 450x450x60x3. I want to perform a spline interpolation of A for power level [1.3, 1.7, 2.3]. What would be the best way to do this? Should I be treating this problem as a 3 times 1D interpolation or do I need to use gridded data? If so, how can I do this?
Thank you :)

Answers (1)

KSSV on 18 Aug 2022
A = rand(450,450,50,3) ;
B = zeros(size(A)) ;
for i = 1:450
for j = 1:450
for k = 1:50
B(i,j,k,:) = interp1([1 2 3],squeeze(A(i,j,k,:)),[1.3 1.7 2.3]) ;
MM on 18 Aug 2022
See attached for an example of B1. I only included B1(:,:,1:3,:) instead of all 50 for the 3rd dimension because otherwise it was too big.
Let me give a little bit more explanation on the data.
For the measurement of the data in A, I used B1 = [1.3, 1.7,2.3]. But the real value used by the machine is spatially dependent and so B1 is different for each x,y which is represented in the attached matrix. B1 is the same in the 3rd dimension.
I want to determine what the values in A would be if B1 was [1.3, 1.7, 2.3] for each x,y. So I want to interpolate the data in A for B1 = 1.3, 1.7 and 2.3.

Sign in to comment.


Find more on Resizing and Reshaping Matrices 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!