How do you vertically concatenate the rows of a cell array consisting of vectors of numbers?

29 ビュー (過去 30 日間)
I want to vertically concatenate the elements of a cell array so that, for example, an array that is 3 x 9 becomes 1 x 9. How do I do that? The following concatenates everything into one dimension, which isn't what I want:
vertcat(cellarray{:});
  2 件のコメント
the cyclist
the cyclist 2022 年 3 月 30 日
What you want to do is not clear to me. Can you upload the cell array (using the paperclip icon in the INSERT section of the toolbar), or perhaps just write code here to define an smaller (like 3x2) input, and what you expect the output to be?
The best method will likely depend on whether the cell elements are numeric, strings, character arrays, etc.
L'O.G.
L'O.G. 2022 年 3 月 30 日
編集済み: L'O.G. 2022 年 3 月 30 日
Each element of the cell array contains an N x 1 vector where N is not necessarily the same for each vector and the elements of the vector are numbers with double precision.

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

採用された回答

per isakson
per isakson 2022 年 3 月 30 日
Example
m = magic(3);
m = [m,m,m];
cac = num2cell(m); % sample data
arrayfun( @(ix) vertcat(cac{:,ix}), [1:9], 'uni',false )
ans = 1×9 cell array
{3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double}
Is this what you look for?
  1 件のコメント
L'O.G.
L'O.G. 2022 年 3 月 30 日
編集済み: L'O.G. 2022 年 3 月 30 日
Yes, beautiful! Thanks! I didn't know about arrayfun.

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

その他の回答 (2 件)

Simon Chan
Simon Chan 2022 年 3 月 30 日
Tru the following:
cellfun(@(x) cell2mat(x),num2cell(a,1),'uni',0)

Walter Roberson
Walter Roberson 2022 年 3 月 30 日
Output = arrayfun(@(ColIdx) vertcat(YourCell{:,ColIdx}), 1:size(YourCell,2), 'uniform', 0);

カテゴリ

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

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by