Я написал функцию в Matlab, которая принимает изображение 'I' и две длины в записях и возвращает изображение 'output' того же размера, что и I, в котором пиксели I были переведены в соответствии с . Выполненный перевод является циклическим, то есть когда переведенный пиксель проходит d пикселей за пределы одного из размеров I, он помещается в положение d по оси, связанной с этим измерением.Векторизовать код в Matlab
Эта функция использует два цикла for, и я хотел бы ее векторизовать, чтобы быть выполненным быстрее.
function [ output ] = translated(I,horizontal_translation, vertical_translation)
output=I;
[H , W]=size(I);
sx=horizontal_translation; sy=vertical_translation;
for i=1:H
for j=1:W
if i+sx>H
i_=mod(i+sx,H);
else
i_=i+sx;
end
if j+sy>W
j_=mod(j+sy,W);
else
j_=j+sy;
end
output(i_,j_)=I(i,j);
end
end
end
Вам необязательно вызывать функцию по модулю вообще, просто '[sy: W 1: sy-1]' Также кажется, что H и W отменены? –