Working with a set of matrices
7 次查看(过去 30 天)
显示 更早的评论
I want to generate a finite matrix group by starting with the S ={identity} and multiplying by some generators until S no longer grows in size.
Is there an efficient way to deal with a "set" like this, without manualling checking for duplicates? For example, it seems awkward if you use cell arrays to store the elements of S.
2 个评论
Matt J
2021-4-3
For example, it seems awkward if you use cell arrays to store the elements of S.
Why?
采纳的回答
Matt J
2021-4-3
编辑:Matt J
2021-4-3
I'm not sure I will fully understand the task without seeing an example. However, if S is organized as an MxNxP array,
[M,N]=deal(3,3);
S=cat(3,eye(M,N), randi(5,M,N), eye(M,N) )
then you can get rid of duplicate slices with
s=reshape(S,[],size(S,3));
S=reshape( unique(s.','rows').', M,N,[])
If S contains non-integer matrices, you will probably need to use uniquetol() instead of unique().
更多回答(0 个)
另请参阅
类别
在 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!