Interpolating a 3D matrix
조회 수: 7 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
답변 (1개)
Star Strider
2019년 3월 26일
댓글 수: 2
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.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!