Spline interpolation of 4D matrix

1 次查看(过去 30 天)
MM
MM 2022-8-18
评论: MM 2022-8-18
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 :)

回答(1 个)

KSSV
KSSV 2022-8-18
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]) ;
end
end
end
  3 个评论
KSSV
KSSV 2022-8-18
What is B1??? It seems in B1 the values are not in increasing order....they are supposed to be monotonically increasing.
MM
MM 2022-8-18
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

产品


版本

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by