使用垂直时出错:连接的矩阵的尺寸不一致

时间:2016-01-30 18:18:18

标签: matlab perceptron

我正在研究多层感知器分类器(关于费希尔虹膜数据集,所以多类分类),我得到上面提到的(在这个问题的标题上)错误。我不知道为什么,因为我的矩阵有相同的行和列。一切似乎都是正确的,但显然事情并非如此!

CODE:

% 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 个答案:

答案 0 :(得分: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来电。