Using vertcat for cell array of differing length
조회 수: 16 (최근 30일)
이전 댓글 표시
I have a 3 x 2 cell array consisting of elements that are vectors 1 x N where N changes. How do I find the vector of minimum length in the cell array and vertically concatenate based on the length of that vector?
댓글 수: 2
Jonas
2022년 5월 4일
편집: Jonas
2022년 5월 4일
it also depends, if you want the minimum length per cell column or if you want all vectors to be cut down to the smallest vector length of all cells. start with
lengthMatrix=cellfun(@numel,yourCell)
to get a matrix of vector lengths, then continue with eg
minLength=min(lengthMatrix,[],'all')
cellWithCutEntries=cellfun(@(in) in(1:minLength),yourCell)
and a
cell2mat(cellWithCutEntries)
call at the end
this concatenates all vectors off all cells using the minimum length
답변 (1개)
KSSV
2022년 5월 4일
편집: KSSV
2022년 5월 4일
% Make dummy data for demo
A = cell(3,2) ;
for i = 1:3
for j = 1:2
N = randperm(10,1) ;
A{i,j} = rand(1,N) ;
end
end
% Get length
L = cellfun(@numel,A) ;
% Join L < 5 arrays
idx = L < 5 ; % GEt indices of cell arrays whos length is less than 5
B = A(idx) ;
iwant = horzcat(B{:}) % join the cell arrays
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!