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

# How to select specific row in a matrix

Asked by Ikra89 on 11 Feb 2013

Hi all..

i have a problem to select every row.

for eg:

i have matrix 100x13.

i want to select data which position in row 1-5, 21-25, 41-45, 61-65, 81-85.

so i have 2 new matrixs. first as i described above, and the second is the rest (6-20, 26-40, 46-60, 66-80, 86-100).

i want to apply k-fold method to get training data and testing data.

thanks a lot if somebody can help me.

regards

Ikra

## Products

Answer by Shashank on 11 Feb 2013
```A = rand(100,4);
```
```ind_logical = logical(ones(100,1));
ind_logical([1:5, 21:25, 41:45, 61:65, 81:85])=false;
```
```B = A(~ind_logical,:);
C = A(ind_logical,:);
```

Jan Simon on 11 Feb 2013

true(100, 1) is more efficient than creating a double array at first and convert it ino a logical. But the logical indexing is an efficient method here in general: +1.

Ikra89 on 13 Feb 2013

i try to change A = rand(100,4) to fix dimension become 75x13 and 25x13, but the output is different from the real data.

in this case i just want to select data, not to change. thanks a lot for your answer, but if you can fix it, i really appreciate your help.

Answer by Thorsten on 11 Feb 2013
Edited by Thorsten on 11 Feb 2013
` X = rand(100, 13);`
``` ind0 = 1:5; ind1 = ind0;
for i = 1:4, ind1 = [ind1 ind0 + 20*i]; end
ind2 = setdiff(1:100, ind1);```
``` A = X(ind1, :);
B = X(ind2, :);```

## 1 Comment

Ikra89 on 13 Feb 2013

wrong answer. your program not too different with benji bowbow in above. why the output is different with the data? in this case i just want to select data, not to change. thanks a lot for your answer, but if you can fix it, i really appreciate your help.