How to concatenate elements in cell array to a vector?

25 visualizzazioni (ultimi 30 giorni)
I have cell arrays with different size & I want to concatenate all the elements in the cell to become a vector. How to do that?
This is my code:
% Create cell arrays
Q= [23 34; 44 55; 56 71; 63 49; 71 30];
B= [12 13; 10 99];
C{1}=Q;
C{2}=B;
% Convert cells to vector
nCol = cellfun('size', C, 1);
nRow = numel(C);
No_of_elements = cellfun(@numel, C);
P = No_of_elements(1,1) + No_of_elements(1,2);
Output = NaN(1,P); % Size vector
for iC = 1:numel(C)
idx = (iC - 1) + 1;
Output(1:P(iC), idx:idx+1) = C{iC};
end
I want the final output to become, Output = [23 34 44 55 56 71 63 49 71 30 12 13 10 99]

Risposta accettata

Paul
Paul il 3 Ago 2022
Q= [23 34; 44 55; 56 71; 63 49; 71 30];
B= [12 13; 10 99];
C{1}=Q;
C{2}=B;
Output = reshape(vertcat(C{:}).',1,[])
Output = 1×14
23 34 44 55 56 71 63 49 71 30 12 13 10 99
  3 Commenti
Paul
Paul il 3 Ago 2022
Modificato: Paul il 3 Ago 2022
Q and B are not cell arrays. If you have them by themselves then
Q = [23 34 10; 44 55 45; 56 71 32; 63 49 55; 71 30 11];
B = [12 13; 10 99];
output = horzcat(reshape(Q.',1,[]),reshape(B.',1,[]))
output = 1×19
23 34 10 44 55 45 56 71 32 63 49 55 71 30 11 12 13 10 99
If they really are elements of a cell array
C{1} = Q;
C{2} = B;
output = horzcat(reshape(C{1}.',1,[]),reshape(C{2}.',1,[]))
output = 1×19
23 34 10 44 55 45 56 71 32 63 49 55 71 30 11 12 13 10 99
Probably other solutions as well.

Accedi per commentare.

Più risposte (0)

Categorie

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

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by