How to concatenate elements in cell array to a vector?

26 ビュー (過去 30 日間)
NHJ
NHJ 2022 年 8 月 3 日
コメント済み: NHJ 2022 年 8 月 3 日
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]

採用された回答

Paul
Paul 2022 年 8 月 3 日
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 件のコメント
Paul
Paul 2022 年 8 月 3 日
編集済み: Paul 2022 年 8 月 3 日
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.
NHJ
NHJ 2022 年 8 月 3 日
Thank you so much. I get it

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by