How to concatenate cells within cells

1 visualizzazione (ultimi 30 giorni)
Keegan Sim
Keegan Sim il 12 Mag 2023
Modificato: Stephen23 il 12 Mag 2023
Say I have X={{1},{2},{3},{4}}, Y={{5},{6},{7;8},{9;10}}
I would like to have Z={{1;5},{2;6},{3;7;8},{4;9;10}},
that is, concatenate X over Y, both 1x4 cell arrays, into Z which is also a 1x4 cell array.
Is there a simple way to do this?

Risposta accettata

Stephen23
Stephen23 il 12 Mag 2023
Modificato: Stephen23 il 12 Mag 2023
"Is there a simple way to do this?"
Yes, CELLFUN and VERTCAT:
X = {{1},{2},{3},{4}};
Y = {{5},{6},{7;8},{9;10}};
Z = cellfun(@vertcat,X,Y,'uni',0)
Z = 1×4 cell array
{2×1 cell} {2×1 cell} {3×1 cell} {3×1 cell}
Checking:
Z{:}
ans = 2×1 cell array
{[1]} {[5]}
ans = 2×1 cell array
{[2]} {[6]}
ans = 3×1 cell array
{[3]} {[7]} {[8]}
ans = 3×1 cell array
{[ 4]} {[ 9]} {[10]}
Note that storing numeric data in those nested cell arrays is not efficient data design. Simpler numeric arrays are intended for storing numeric data.
  2 Commenti
Keegan Sim
Keegan Sim il 12 Mag 2023
How would you store X,Y, Z and perform this operation using numeric arrays?
Stephen23
Stephen23 il 12 Mag 2023
Modificato: Stephen23 il 12 Mag 2023
"How would you store X,Y, Z and perform this operation using numeric arrays?"
Simply replace the inner nested cell arrays with basic numeric arrays:
X = {1,2,3,4};
Y = {5,6,[7;8],[9;10]};
Z = cellfun(@vertcat,X,Y,'uni',0)
Z = 1×4 cell array
{2×1 double} {2×1 double} {3×1 double} {3×1 double}
Checking:
Z{:}
ans = 2×1
1 5
ans = 2×1
2 6
ans = 3×1
3 7 8
ans = 3×1
4 9 10

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Prodotti


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by