How to replace cell values with consecutive values related to their index
조회 수: 1 (최근 30일)
이전 댓글 표시
채택된 답변
dpb
2021년 5월 29일
c=[{cell(1,1)} {cell(1,5)} {cell(1,3)}]; % original cell array
% engine
n=cellfun(@numel,c);
v=1:sum(n);
i1=1;
for i=1:numel(n)
i2=i1+n(i)-1;
c{i}=v(i1:i2);i1=i2+1;
end
results in
>> c
c =
1×3 cell array
{[1]} {1×5 double} {1×3 double}
>> c{:}
ans =
1
ans =
2 3 4 5 6
ans =
7 8 9
>>
There's probably a clever accumarray() or arrayfun() syntax to avoid the explicit loop, but nothing came to me quickly...
추가 답변 (1개)
Stephen23
2021년 5월 29일
편집: Stephen23
2021년 5월 29일
Simpler:
C = {cell(1,1),cell(1,5),cell(1,3)}
N = cellfun(@numel,C);
D = mat2cell(1:sum(N),1,N)
댓글 수: 1
dpb
2021년 5월 29일
That's what I intended, but kept muffing the mat2cell syntax...it's always thrown me for a loop for some reason -- rarely ever use it I guess is likely cause.
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!