序言:
我的框架是Matlab。我有一个非常大的数据矩阵M(大小(M)= 30 20 30 20 51 300)我需要操纵这个矩阵(计算一些相关性,平均值,循环移位,插值等等)。
!重要! :此矩阵的大多数元素都是零或一些 !!
我的问题:由于使用如此庞大的矩阵非常耗时,是否可以执行相同的操作,但是在此矩阵的稀疏形式上?当然,不应该丢失任何关于零或一的信息(例如,用于计算不同元素之间的平均值或相关性)。
还有其他方法来处理这样的矩阵吗? (很大,大多是0和1)
提前致谢!
答案 0 :(得分:1)
您可以使用稀疏矩阵。
稀疏矩阵的唯一问题是,它们只有两个维度,因此表示矩阵的直接方法是将其包装成一个大小为[N 1]
的稀疏矩阵,其中{{1在你的情况下。
我已经为N维直方图(听起来类似于你的应用程序)做了这个,它工作得很好。
但是你将失去使用所有智能索引的可能性。 因此,在单个维度上使用均值/和等将变得更加复杂,因为您必须将下标索引转换为线性索引,反之亦然。
为此,您应该查看N = prod([ 30 20 30 20 51 300])
和sub2ind
。
(听起来像将内置稀疏矩阵包装到n维稀疏矩阵中的有趣项目......)