Корреляционная функция Matlab

function letter=read_char(imgn, num_letters)

global templates

comp=[ ];

for n=1:num_letters

    sem=corr2(imgn, templates{1,n});

    comp=[comp sem];

end

vd=find(comp==max(comp));

Может кто-нибудь объяснить, что делает цикл «FOR» и как рассчитывается «vd»? Кроме того, что такое переменная «comp» и как она будет выглядеть, поскольку массив также содержит себя и другую переменную «sem», которая вычисляется из функции corr2. Благодарность


person Joka    schedule 07.02.2011    source источник


Ответы (1)


цикл for создает переменную цикла n, которая начинается с 1 для первого цикла и увеличивается на 1 для каждого последующего цикла, пока не достигнет num_letters. Это означает, что цикл будет выполняться num_letters раза.

Сначала переменная comp инициализируется как пустая матрица []. В цикле вычисляется двумерный коэффициент корреляции между матрицей imgn и другой матрицей templates{1,n} (индексированной из массив ячеек) с помощью функции КОРРЕКЦИЯ2. Коэффициент корреляции sem добавляется к массиву comp с помощью горизонтальной конкатенации. В конечном итоге это приведет к тому, что comp будет массивом коэффициентов корреляции 1 на num_letters.

В переменной vd хранятся индексы массива, где значения в comp равны максимальному значению, найденному в comp. Это делается с помощью функций MAX и ПОИСК и оператор сравнения ==.

В будущем я бы посоветовал вам сначала использовать онлайн-документацию, чтобы попробовать и помочь вам лучше понять, как работает MATLAB. Это очень хорошая документация. Я узнал большую часть того, что знаю из него. ;)

person gnovice    schedule 07.02.2011