Interpolating a 3D matrix
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (1)
Star Strider
am 26 Mär. 2019
2 Kommentare
Star Strider
am 26 Mär. 2019
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.
Siehe auch
Kategorien
Mehr zu Interpolation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!