Я предполагаю, что матрица A
является изображением, что означает, что пиксели расположены с регулярным интервалом, что означает, что вы можете использовать INTERP2 .Я также предполагаю, что вы рассчитываете для каждого пикселя индивидуально интерполированное значение из A
.Однако вы можете выполнить поиск за один шаг, который будет немного быстрее.
Скажем, A
- это изображение 100x100, а B
- это массив 10000 x 2 с * 1009.* за каждый пиксель.Тогда вы бы вычислили C
таким образом:
%# create coordinate grid for image A
[xx,yy] = ndgrid(1:100,1:100);
%# linearize the arrays, and add the offsets
xx = xx(:);
yy = yy(:);
xxShifted = xx + B(:,1);
yyShifted = yy + B(:,2);
%# preassign C to the right size and interpolate
C = A;
C(:) = interp2(xx,yy,A(:),xxShifted,yyShifted);