Interpolation of a matrix in 2D for complex numbers
23 views (last 30 days)
Show older comments
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 Comments
Answers (2)
KSSV
on 25 May 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 Comments
See Also
Categories
Find more on Interpolation 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!