Interpolating a 3D matrix
이전 댓글 표시
I have a 14x14x221 matrix, A. Using a loop over the third dimension, I'm trying to interpolate the 14x14 matrix at each iteration of this loop to produce a new matrix that has more data points. Then save the new matrix at each iteration to form a new 3D matrix that has X,Y dimensions much greater than 14.
I have a script that does this for the rows but there is something wrong with the second nested for loop, which interpolates column-wise.
I keep getting this error "Unable to perform assignment because the size of the left side is 14-by-1 and the size of the right side is 1-by-221" for this line
NewestA(:,g,h) = R;
N = 221 ;
[m,n,p] = size(A) ;
NewA = zeros(m,N,p) ;
xi = linspace(1,n,N) ;
for i = 1:m % Splining row wise
for j = 1:p
T = interp1(1:n,A(i,:,j),xi) ;
NewA(i,:,j) = T ;
end
end
A = NewA ;
[m,n,p] = size(A) ;
NewestA = zeros(m,N,p) ;
yi = linspace(1,m,N);
for g = 1:n
for h =1:p
R=interp1(1:m,A(:,g,h),yi);
NewestA(:,g,h) = R;
end
end
A=NewestA
답변 (1개)
Star Strider
2019년 3월 26일
0 개 추천
댓글 수: 2
Thomas Holmes
2019년 3월 26일
Star Strider
2019년 3월 26일
I didn’t know this is homework.
My one suggestions is that with respect to the second loop, perhaps:
[m,n,p] = size(NewA) ;
might be more appropriate.
카테고리
도움말 센터 및 File Exchange에서 Interpolation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!