create cell from array with specified size

3 Ansichten (letzte 30 Tage)
Gaetano Pavone
Gaetano Pavone am 19 Dez. 2023
Bearbeitet: Voss am 19 Dez. 2023
Hello,
Let mymatrix a 24x1 double, how is it possible to obtain a group as specified_sizex1 cell?
For example:
mymatrix=[1:24];
group={[mymatrix(1) mymatrix(2)],...}

Akzeptierte Antwort

Dyuman Joshi
Dyuman Joshi am 19 Dez. 2023
Bearbeitet: Dyuman Joshi am 19 Dez. 2023
Note that the specified size must completely divide the number of rows in the column vector -
mymatrix=[1:24].';
size(mymatrix)
ans = 1×2
24 1
%Total number of elements in the vector
n = numel(mymatrix);
%Specified size
ss1 = 2;
out1 = mat2cell(mymatrix, repelem(n/ss1, 1, ss1), 1)
out1 = 2×1 cell array
{12×1 double} {12×1 double}
%Example 2
ss2 = 4;
out2 = mat2cell(mymatrix, repelem(n/ss2, 1, ss2), 1)
out2 = 4×1 cell array
{6×1 double} {6×1 double} {6×1 double} {6×1 double}

Weitere Antworten (2)

Fangjun Jiang
Fangjun Jiang am 19 Dez. 2023
num2cell(mymatrix)
  2 Kommentare
Gaetano Pavone
Gaetano Pavone am 19 Dez. 2023
it doesn't work good for a specified_size different from 2
Fangjun Jiang
Fangjun Jiang am 19 Dez. 2023
mat2cell(mymatrix,[1],[6, 6, 6, 6])

Melden Sie sich an, um zu kommentieren.


Voss
Voss am 19 Dez. 2023
Bearbeitet: Voss am 19 Dez. 2023
mymatrix = (1:24).'
mymatrix = 24×1
1 2 3 4 5 6 7 8 9 10
specified_size = 4;
assert(mod(numel(mymatrix),specified_size)==0, ...
'numel(mymatrix) is not a multiple of specified_size')
group = num2cell(reshape(mymatrix,[],specified_size).',2)
group = 4×1 cell array
{[ 1 2 3 4 5 6]} {[ 7 8 9 10 11 12]} {[13 14 15 16 17 18]} {[19 20 21 22 23 24]}

Tags

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by