Ошибка при использовании вертикали: размеры сцепляемых матриц не совпадают

Я работаю над многослойным классификатором персептрона (по набору данных Ириса Фишера, то есть по мультиклассовой классификации), и я получаю вышеупомянутую (в названии этого вопроса) ошибку. Я не знаю почему, так как мои матрицы имеют одинаковые строки и столбцы. Кажется, все правильно, но, очевидно, что-то не так!

КОД:

% Perceptron(Multilayer perceptron)

% coding (+1/-1) of 3 classes
a = [-1 -1 +1]';%'//
b = [-1 +1 -1]';%'//
c = [+1 -1 -1]';%'//
% define training inputs
rand_ind = randperm(50);
trainSeto = meas(rand_ind(1:35),:);
trainVers = meas(50 + rand_ind(1:35),:);
trainVirg = meas(100 + rand_ind(1:35),:);
trainInp = [trainSeto trainVers trainVirg];
% define targets
T = [repmat(a,1,length(trainSeto)) repmat(b,1,length(trainVers))
repmat(c,1,length(trainVirg))];

Итак, что не так с моим кодом и как я могу это исправить?

Кто-нибудь может мне помочь?

1 ответ

Решение
meas=rand(200,4);
a = [-1 -1 +1]';%'//
b = [-1 +1 -1]';%'//
c = [+1 -1 -1]';%'//
% define training inputs
rand_ind = randperm(50);
trainSeto = meas(rand_ind(1:35),:);
trainVers = meas(50 + rand_ind(1:35),:);
trainVirg = meas(100 + rand_ind(1:35),:);
trainInp = [trainSeto trainVers trainVirg];
% define targets
tmp1 = repmat(a,1,length(trainSeto));
tmp2 = repmat(b,1,length(trainVers));
tmp3 = repmat(c,1,length(trainVirg));
T = [tmp1 tmp2 tmp3];
clear tmp1 tmp2 tmp3 %// Used for cleaning the temporaries

Я думаю, что MATLAB испытывает трудности с обработкой трех repmat вызовы внутри оператора конкатенации ([]). т.е. я думаю, что он пытается repmat первое, но застревает на том, как и когда repmat второй. Если вы определили временные переменные, все работает нормально. Вы можете использовать clear Позвоните, если вы не хотите, чтобы временные сотрудники загромождали ваше рабочее пространство.

Другие вопросы по тегам