Ошибка при использовании вертикали: размеры сцепляемых матриц не совпадают
Я работаю над многослойным классификатором персептрона (по набору данных Ириса Фишера, то есть по мультиклассовой классификации), и я получаю вышеупомянутую (в названии этого вопроса) ошибку. Я не знаю почему, так как мои матрицы имеют одинаковые строки и столбцы. Кажется, все правильно, но, очевидно, что-то не так!
КОД:
% 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
Позвоните, если вы не хотите, чтобы временные сотрудники загромождали ваше рабочее пространство.