Interpolate matrices for different times in Matlab

1 vue (au cours des 30 derniers jours)
mldmnn
mldmnn le 9 Août 2018
Commenté : mldmnn le 10 Août 2018
I have computed variables stored in a matrix for a specific time vector. Now I want to interpolate between those whole matrices for a new time vector to get the matrices for the desired new time vector.
I've came up with the following solution but it seems clunky and computational demanding:
clear all;
a(:,:,1) = [1 1 1;2 2 2;3 3 3]; % Matrix 1
a(:,:,2) = [4 4 4;6 6 6;8 8 8]; % Matrix 2
t1 = [1 2]; % Old time vector
t2 = [1 1.5 2]; % New time vector
% Interpolation for each matrix element
for r = 1:1:size(a,2)
for c = 1:1:size(a,1)
tab(:) = a(r,c,:);
tabInterp(r,c,:) = interp1(t1,tab(:),t2);
end
end
The result is and should be:
[2.5000 2.5000 2.5000
4.0000 4.0000 4.0000
5.5000 5.5000 5.5000]
Any thoughts?

Réponse acceptée

Stephen23
Stephen23 le 10 Août 2018
Modifié(e) : Stephen23 le 10 Août 2018
Simpler in just one line and more efficient without all of those intermediate variables:
>> a(:,:,1) = [1 1 1;2 2 2;3 3 3];
>> a(:,:,2) = [4 4 4;6 6 6;8 8 8];
>> b = permute(interp1([1,2],permute(a,[3,2,1]),[1,1.5,2]),[3,2,1])
b(:,:,1) =
1 1 1
2 2 2
3 3 3
b(:,:,2) =
2.5000 2.5000 2.5000
4.0000 4.0000 4.0000
5.5000 5.5000 5.5000
b(:,:,3) =
4 4 4
6 6 6
8 8 8
And compared to your original code:
>> isequal(tabInterp,b)
ans = 1
  1 commentaire
mldmnn
mldmnn le 10 Août 2018
That is even better than the other answer! Nice to learn from experts!

Connectez-vous pour commenter.

Plus de réponses (1)

Ameer Hamza
Ameer Hamza le 9 Août 2018
You can use interp3 as follow:
clear all;
a(:,:,1) = [1 1 1;2 2 2;3 3 3]; % Matrix 1
a(:,:,2) = [4 4 4;6 6 6;8 8 8]; % Matrix 2
t1 = [1 2]; % Old time vector
t2 = [1 1.5 2]; % New time vector
% Interpolation for each matrix element
[X, Y, Z] = meshgrid(1:size(a,1), 1:size(a,2), t1);
[X2, Y2, Z2] = meshgrid(1:size(a,1), 1:size(a,2), t2);
tabInterp = interp3(X,Y,Z,a,X2,Y2,Z2);
  2 commentaires
mldmnn
mldmnn le 10 Août 2018
It works very well. Thank you! Didn't think about using interp3 for this issue.
Ameer Hamza
Ameer Hamza le 10 Août 2018
You are welcome.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Interpolation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by