Interpolating many matrices without for loop
4 次查看(过去 30 天)
显示 更早的评论
Hi everybody, well I want to interpolate a 3D matrix composed of 700x2x60 values. I want to interpolate with respect to an array of 700 values. But i want an interpolation only 1 dimension, for example
if i had:
3 1
6 2
9 3
60 times, with different values, i want to interpolate with respect to 1.5, 2.5 and 3 I would get 4.5 7.5 and 10.5, 60 times and with the values relative to each one of the 60 matrices.
So in essence its like interp1 but 60 times. And I can't manage to do it without a for loop which is time consuming. and i need to do it over 15000 times.
thank you for your answers
5 个评论
Fangjun Jiang
2011-11-17
You can edit your question and apply {}Code format to make it look right. I did only the {}Code formatting part but didn't change any of your text.
Fangjun Jiang
2011-11-17
Look at all the buttons above your question text box when you post or edit your question.
采纳的回答
Fangjun Jiang
2011-11-17
You can use reshape().
x=1:3;
y=3:3:9;
X=magic(3);
[M,N]=size(X);
Y=interp1(x,y,X(:),'linear','extrap');
Y=reshape(Y,M,N);
5 个评论
Jan
2011-11-17
Matlab's INTERP1 is lame and there is no reason to limit the algorithm to vectors. But a linear interpolation is not complicated - roughly:
Si = Ti - floor(Ti);
Ti = floor(Ti);
Yi = Y(Ti, :) .* (1 - Si) + Y(Ti + 1, :) .* Si;
I do not understand the value of c. It is a [700x1x60] array any you use c(i) for the interpolation.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Multidimensional Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!