2016-01-30 1 views
0

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

КОД:

% 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))]; 

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

Может ли кто-нибудь мне помочь?

+2

Что такое 'meas'? Это не встроенная функция. – Adriaan

+0

meas - это атрибуты (4 атрибута) набора данных рыбацкого ириса. –

ответ

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, если вы не хотите, чтобы временные пользователи загромождали ваше рабочее пространство.

+0

Как я уже говорил выше, отвечая на ваш комментарий, meas - это матрица размером 150x4 с атрибутами набора данных рыбацкого ириса. Таким образом, meas = rand (200,5) неверно. Уже принят показатель. –

+0

@ Jimbo_ai Ну, конечно, но мне нужно было что-то, чтобы заставить код работать. Остальная часть кода работает, часть временных переменных - важный бит ... – Adriaan

+0

Тем не менее, ваш ответ был полезен и решил эту проблему (несмотря на то, что я придумал новую сейчас). –

 Смежные вопросы

  • Нет связанных вопросов^_^