2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 MatLab. Машинное обучение. Распознование текста.
Сообщение24.09.2012, 15:03 
Добры день.
Задали лабу, вот задание.
Набор данных USPS содержит изображения рукописных цифр (см. рис. 1), отсканированных с конвертов Американской почтовой службой (U.S. Postal Service). Изображения имеют размер 16×16 пикселов. Значения пикселов представлены в формате «байт/пиксел», т.е. заключены в интервале [0, 255]. Исходные данные представлены в файле usps_all.mat, в котором хранится трехмерный массив data размера 256×1100×10 (количество пикселов × количество изображений × цифра). В качестве обучающей выборки следует использовать первые 600 образцов из каждого i-го класса data(:,1:600,i). Оставшиеся 500 образцов — data(:,601:1100,i)— из каждого класса будут составлять тестовую выборку.

На определенном моменте у меня возникли проблемы с матлабом, т.к. я им первый раз пользуюсь. Помогите.

Вот функции, которые сначала выполняются:
1. Бинаризуется массив data
Код:
function binar = BIN(data,thread)
    binar = data(:,1:600,:) > thread*255;
end


2.
Код:
function theta = NBtrain(binar)
theta = reshape((sum(binar(:,1:600,:),2)+1)/(600+2), 256, 10);
end

3.
Код:
function class = recognition(theta, binar)
    class = [];
    for i = 1:size(binar, 1)
        mult1 = theta(:, find(binar(i,:,:)));
        mult2 = 1 - theta(:, find(binar(i,:, :) == 0));
        class(i, :) = prod(mult1, 2)' .* prod(mult2, 2)';
    end
end


И вот как раз тут он мне выдает ошибку.
Код:
??? Index exceeds matrix dimensions.

Error in ==> recognition at 4
        mult1 = theta(:, find(binar(i,:,:)));


Побороть которую я никак не могу. Есть советы по решению данной проблемы?

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group