Good method to store pyramid shaped cell array?
이전 댓글 표시
Hi all,
I need to store some matrices in a cell, say I have 4 matrices: e1, e2, e3, e4, I need to compute the product of the matrix transpose and the matrix itself like:
e1' * e1; e1' * e2;
e2' * e2; e2' * e3;
e3' * e3; e3' * e4;
e4' * e4;
So the matrix transpose product itself, and the matrix transpose multiply the next matrix. I can use a 4-by-2 cell to store these, but the last cell element would be void, any better ways? I'd like to keep the hierarchical structure. Cheers!
Edit: I'm sorry, I should have made the question clearer. I just generate a 4-by-2 cell array and store these in it, leaving the last cell element void. I think it is fine for now.
채택된 답변
추가 답변 (1개)
Jos (10584)
2018년 1월 18일
If you have too many void cells in an array, you could consider a sparse encoding scheme, where you store the indices and the contents of your cell structure, similar to SPARSE. In your case however, having a single void cell, I would not take the trouble. Nonetheless, here is one approach:
C = {'one',[],[] ; [] 2 [] ; [] 3 4 ; [] [] [] ; 5 '6' []} % a cell array with many voids
% encode into sparse format using a structure
tf = ~cellfun(@isempty,C) ; % non-empty cells
S.size = size(C) ;
S.index = find(tf) ; % index
S.values = C(tf) ;
whos % encoding into sparse saves some memory ...
% rebuild
C2 = cell(S.size) ;
[C2{S.index}] = deal(S.values{:})
isequal(C, C2) % check ...
카테고리
도움말 센터 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!