Reshape a row vector and convert it to a cell array

I have a row vector as the following:
x = [1:10, 101:110, 11:20, 111:120]
Now I want to convert it to a 2-by-2 cell array C, where
C(1,1) = {[1:10]}
C(1,2) = {[11:20]}
C(2,1) = {[101:110]}
C(2,2) = {[111:120]}
How can I achieve this?

Réponses (2)

x = [1:10, 101:110, 11:20, 111:120];
x = reshape(x, [20, 2])';
C = mat2cell(x, [1 1], [10 10])'
C = 2×2 cell array
{[ 1 2 3 4 5 6 7 8 9 10]} {[ 11 12 13 14 15 16 17 18 19 20]} {[101 102 103 104 105 106 107 108 109 110]} {[111 112 113 114 115 116 117 118 119 120]}
Why do you want to do that?? That kind of situation does not call for a slow and inefficient cell array. You could simply use a 2-D double array:
C = reshape(x, [], 10);
Cell arrays are used for situations like where the arrays in each cell are not all of the same size. See the FAQ:

4 commentaires

x = [1:10, 101:110, 11:20, 111:120];
C = reshape(x, [], 10)
C = 4×10
1 5 9 103 107 11 15 19 113 117 2 6 10 104 108 12 16 20 114 118 3 7 101 105 109 13 17 111 115 119 4 8 102 106 110 14 18 112 116 120
@Chunru, thanks for trying it and discovering my coding error. Corrected code is below:
x = [1:10, 101:110, 11:20, 111:120]
x = 1×40
1 2 3 4 5 6 7 8 9 10 101 102 103 104 105 106 107 108 109 110 11 12 13 14 15 16 17 18 19 20
C = reshape(x, 10, [])'
C = 4×10
1 2 3 4 5 6 7 8 9 10 101 102 103 104 105 106 107 108 109 110 11 12 13 14 15 16 17 18 19 20 111 112 113 114 115 116 117 118 119 120
@Image Analyst May I ask how to make x = [1:10, 101:110, 11:20, 111:120] to be x = [1:10, 11:20; 101:110, 111:120] by using reshape or some MATLAB built-in function?
@hmhuang, for that, try this:
x = [1:10, 101:110, 11:20, 111:120];
C = reshape(x, 10, [])';
Codd = C(1:2:end,:);
Ceven = C(2:2:end,:);
Codd = reshape(Codd', 20, [])';
Ceven = reshape(Ceven', 20, [])';
x = [Codd; Ceven]
x = 2×20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
Why do you need to do this rearrangement anyway?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Operators and Elementary Operations dans Centre d'aide et File Exchange

Question posée :

le 16 Nov 2021

Commenté :

le 16 Nov 2021

Community Treasure Hunt

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

Start Hunting!

Translated by