필터 지우기
필터 지우기

Interpolation of a matrix in 2D for complex numbers

조회 수: 12 (최근 30일)
elis02
elis02 2023년 5월 25일
답변: elis02 2023년 5월 27일
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?

답변 (2개)

KSSV
KSSV 2023년 5월 25일
You may use imresize.
Let A be your complex matrix:
B = imresize(A,2) ; % this makes double the size of A, you can specify the dimensions also
You can also use interp2.
[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
elis02
elis02 2023년 5월 25일
편집: elis02 2023년 5월 25일
attaching the code.
see line 224.
the next lines is why i need this :-)
The relavent variable is E_x_y_t.
elis02
elis02 2023년 5월 27일
So to solve it I'm using interp2 right now:
E_x_y_t([1:length(x)/4, length(x)/4+length(x)/2+1:length(x)],:,:) = [];
E_x_y_t(:,[1:length(x)/4, length(x)/4+length(x)/2+1:length(x)],:) = [];
x = [x(length(x)/4+1:length(x)/4+length(x)/2)];
xq = linspace(x(1),x(end),650);
E_new = zeros(length(xq),length(xq),length(T));
for index = 1:length(T)
E_new(:,:,index) = interp2(x,x.',E_x_y_t(:,:,index),xq,xq.');
end
E_x_y_t = E_new;
clear E_new

댓글을 달려면 로그인하십시오.


elis02
elis02 2023년 5월 27일
To solve this i'm using interp2 right now.
E_x_y_t([1:length(x)/4, length(x)/4+length(x)/2+1:length(x)],:,:) = [];
E_x_y_t(:,[1:length(x)/4, length(x)/4+length(x)/2+1:length(x)],:) = [];
x = [x(length(x)/4+1:length(x)/4+length(x)/2)];
xq = linspace(x(1),x(end),650);
E_new = zeros(length(xq),length(xq),length(T));
for index = 1:length(T)
E_new(:,:,index) = interp2(x,x.',E_x_y_t(:,:,index),xq,xq.');
end
E_x_y_t = E_new;
clear E_new

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by