# How can i get sub matrices with using for loop

7 views (last 30 days)
Mooner Land on 16 Sep 2019
Commented: Mooner Land on 18 Sep 2019
Hello everyone
I have a matrix A as:
A=[1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
4
4
4
4
4
5
5
5
5
5
6
6
6
6
6
7
7
7
7
7
7
7
7
7
7
8
8
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
9
9
10
10
10
10
10
10
10
10
10
10
11
11
11
11
11
11
11
11
11
11
12
12
12
12
12
12
12
12
12
12]
I get unique(A) as 12. And then i want to get new matrices as
for i=1, A(1) as row which is equal to i. And for i=2, A(2) as row which is equal to i.............for i=12 A(12) as rows which is equal to i.
For example:
A(1)=[1
1
1
1
1
1
1
1
1
1]
A(2)=[2
2
2
2
2
2
2
2
2
2]
A(3)=[3
3
3
3
3]
........
A(12)=[12
12
12
12
12
12
12
12
12
12]
How can i do this with using for loop or another way? I want to get new matrices as A(1) to A(12).

Kevin Phung on 16 Sep 2019
Edited: Kevin Phung on 16 Sep 2019
you can store each unique value in a cell array:
A_unique = unique(A);
A2 = cell(size(A_unique))
for i = 1:numel(A_unique)
A2{i} = A(A==A_unique(i))
end
then simple call out:
A{1}
A{2}
A{3}
%... etc
##### 2 CommentsShowHide 1 older comment
Kevin Phung on 18 Sep 2019
for i=1:12
B{i}=(i+3).*A{i}.^2
end
you need a dot (.) before your multiplication and exponent operator.

madhan ravi on 17 Sep 2019
a=arrayfun(@(x)A(A==unique(x)),A,'un',0)
celldisp(a)
If you’re goal is simply to create A with repetitions of 10 then it’s simply:
A = num2cell(repmat(1:12,10,1),1)
celldisp(A)
Mooner Land on 18 Sep 2019
I want to get every seperate matrix for come calculations but i cant split matrix to 12 seperate matrix.

R2018b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by