Добры день.
Задали лабу, вот задание.
Набор данных 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,:,:)));
Побороть которую я никак не могу. Есть советы по решению данной проблемы?