MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by FIR
on 17 Apr 2012

In the following code i get error a s

P1 = [-1 -1 2 2; 0 5 0 5]; Tar = [0 ;1 ]

indices=crossvalind('kfold',Tar,10); for i=1:10 test=(indices==i);trains= ~test tst = (indices==i); val = (indices== mod(i+1,10)); trn = ~[tst,val]; net=newff(P1(:,trains),Tar(:,trains),2); net=init(net); [net,tr]=train(net,P1(:,trains),Tar(:,trains)); out = round(sim(net,P(:,test)));

end

Index exceeds matrix dimensions.

Error in cfour (line 58) net=newff(P1(:,trains),Tar(:,trains),2);

please help

*No products are associated with this question.*

Answer by Walter Roberson
on 17 Apr 2012

Accepted answer

That code is going to generate an error unless "indices" is of length 1 exactly. If it is longer than 1, then "test" and "train" will be longer than 1, and would then be too long to use as logical vectors against the columns of the single-column Tar array.

Answer by Andreas Goser
on 17 Apr 2012

net=newff(P1(:,trains),Tar(:,trains),2);

throws an error in the first run, as Tar has no second dimension. Probably you mean:

net=newff(P1(:,trains),Tar(trains),2);

FIR
on 17 Apr 2012

I get error as

Error using trainlm (line 109)

Inputs and targets have different numbers of samples.

Error in network/train (line 106)

[net,tr] = feval(net.trainFcn,net,X,T,Xi,Ai,EW,net.trainParam);

Error in cfour (line 60)

[net,tr]=train(net,P1(:,trains),Tar(trains));

Andreas Goser
on 17 Apr 2012

You just asked why you got this error. Now you know ;-)

I may know more about MATLAB, but hope fully you know more about neural networks... The message "Inputs and targets have different numbers of samples." That sounds like an actionable error message, isn't it?

Answer by Greg Heath
on 22 Apr 2012

1. The input and target matrices must have the same number of columns:

Tar = [ 0 0 1 1 ]

[ I N ] = size( P1) % [ 2 4 ] [ O N ] = size(Tar) % [ 1 4 ]

k = 10

indices=crossvalind('kfold',Tar,k)

2. a. It doesn't make sense to use k > N

b.Instead of using CROSSVALIND from the Bioinformatics TBX, the algorithm might be more portable if you use CROSSVAL from the Statistics TBX.

3. trains= ~test

Rename. TRAINS is a MATLAB function.

Hope this helps.

Greg

Greg Heath
on 22 Apr 2012

Typical nontrivial classification examples should have classes with

many more I/O training pairs than input dimensions.

For the FisherIris example/demo (c = 3, I = 4, N = 150).

Although that ratio is

N/(3*4) = 12.5,

the scatter plot in the PetalLength/PetalWidth plane indicates

that the 3 classes are linearly separable with two hidden nodes.

Hope this helps.

Greg

## 0 Comments