1 view (last 30 days)

Show older comments

Hello!

I would like to perform matrix (n x n) interpolation in the direction of the third dimension which is frequency (1 x N), in a way to obtain intermediate matrices which are the interpolated ones. In my case I need to perform quadratic interpolation method which is not provided in interp1, and the use of polyfit together with polyval needs vectors while I have matrices. any ideas how can I proceed? Thank you very much!

John D'Errico
on 24 Jun 2019

Gert Kruger
on 19 Jun 2019

Here is my attempt at answering your question. I imagine that there are N matrices each with size nxn.

Example matrices:

%%

n = 10; %Matrix size

N = 5; %Number of matrices

%% Generate example matrices

for count = 1:N

CM{count} = rand(n) ; %CM Cell array matrices

end

Then we fit quadratic functions along the third dimension.

%% Generate fits along the third dimension

temp_ar = zeros(1, N);

for x = 1:n

for y = 1:n

for z = 1:N

temp_ar(z) = CM{z}(x, y);

end

Cfit{x, y} = fit( (1:N)', temp_ar', 'poly2');

end

end

Interpolation is achieved by evaluating the fitted functions:

%% Output matrix generation

%For example output matrix, A, must be 'halfway' between 2nd and 3rd input matrices

A = zeros(n);

z = 2.5; %Evaluation depth

for x = 1:n

for y = 1:n

A(x, y) = Cfit{x, y}(z);

end

end

We can test the output matrix, by using the norm:

norm(CM{2} - A)

norm(CM{3} - A)

norm(CM{5} - A)

Note, that the measure of the difference for the first two is less than for the last one, because the matrix A slice is 'further away' from that depth.

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

Start Hunting!