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!