Я пытаюсь реализовать алгоритм преобразования Hough. Алгоритм работает, но он медленный. В настоящее время я рассчитать Rho, этим уравнением в два для петель:Оптимизация формулы Matlab без циклов
для я = 1: длина (х)
j=1; for theta = -pi/2:nBinsTheta:pi/2-nBinsTheta ro =round(x(i).*cos(theta) + y(i).*sin(theta)); .... j = j + 1; end
конец
Как можно упростить это, чтобы работать без петель? Мне нужно рассчитать ro без петель, но как я могу это сделать, чтобы покрыть все возможные тета?
EDIT: Теперь я должен знать, как добавить 1, в назначенный ячейки в аккумуляторе матрицы с учетом х и у координат вектора. Для примера скажем, что у меня есть векторы, такие как:
х: [1 2 1 3]
у: [1 3 1 4]
Я хотел бы, чтобы решить эту проблему без петель , Я знаю, что мне нужно преобразовать в линейные индексы, используя sub2ind, но проблема в том, что будет много одинаковых линейных индексов, например, которые я дал, будет 2x1 (координата 1,1 повторяется дважды). Если вы попытаетесь добавить 1 так:
A ([1 1]) = A ([1 1]) + 1;
он добавит 1 только один раз, это моя проблема.
Что использование 'j' там? – Divakar
j предназначен для получения правильного значения в массиве аккумуляторов для theta's для голосования – EWER115
Не могли бы вы отформатировать раздел EDIT? Трудно читать, как сейчас. – Divakar