Interpolation of a matrix in 2D for complex numbers
22 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello
I have a 3D matrix of a field E_x_y_t. say it's 600 x 700 x 2048 (correlated to x y and t)
At some point I'm deleting part of the Field in x and y. No need to touch T:
E_x_y_t([1:length(x)/4, length(x)/4+length(x)/2+1:length(x)],:,:) = [];
E_x_y_t(:,[1:length(y)/4, length(y)/4+length(y)/2+1:length(y)],:) = [];
x = [x(length(x)/4+1:length(x)/4+length(x)/2)];
But what I really need is from this point to make X and Y again 600 x 700 on all the T. (make interpolation of the complex 2d field for each value of time (T) to smaller grid for better resolution).
How can I do it? using interp2 somehow i guess?
0 commentaires
Réponses (2)
KSSV
le 25 Mai 2023
Let A be your complex matrix:
B = imresize(A,2) ; % this makes double the size of A, you can specify the dimensions also
[m,n,p] = size(A) ;
[X,Y] = meshgrid(1:n,1:m) ;
[Xi,Yi] = meshgrid(linspace(1,n,100),linspace(1,m,100)) ; % give your desired numbers instead of 100
Br = zeros(100,100,p) ;
Bc = zeros(100,100,p) ;
for i = 1:p
Br(:,:,i) = interp2(X,Y,real(A(:,:,i)),Xi,Yi) ;
Bc(:,:,i) = interp2(X,Y,imag(A(:,:,i)),Xi,Yi) ;
end
B = Br+1i*Bc ;
4 commentaires
Voir également
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!