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

조회 수: 25(최근 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
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?

추가 답변(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);

범주

Find more on Data Type Identification in Help Center and File Exchange

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by