1

序言

我的框架是Matlab。我有一个非常大的数据矩阵 M (size(M) = 30 20 30 20 51 300 ),我需要操纵这个矩阵(计算一些相关性,平均,循环移动,插值等等)。

重要:这个矩阵的大部分元素都是或一!

我的问题:由于使用如此庞大的矩阵非常耗时,是否可以执行相同的操作,但是在这个矩阵的稀疏形式上?当然,不应丢失任何关于零或一的信息(例如,用于计算不同元素之间的平均值或相关性)。

有没有其他方法来处理这样的矩阵?(巨大的,主要是 0 和 1)

提前致谢!

4

1 回答 1

1

您可以使用稀疏矩阵。

稀疏矩阵的唯一问题是,它们只有二维,所以表示矩阵的直接方法是将它包装成一个稀疏矩阵,大小[N 1]N = prod([ 30 20 30 20 51 300])你的情况下。我已经为 N 维直方图(听起来与您的应用程序相似)完成了此操作,并且效果很好。

但是,您将失去使用所有智能索引的可能性。因此,在单个维度上使用均值/总和等会变得更加复杂,因为您必须将下标索引转换为线性索引,反之亦然。

为此,您应该查看sub2indand ind2sub。(听起来像是一个有趣的项目,将内置稀疏矩阵包装成一个 n 维稀疏矩阵......)

于 2013-10-15T07:18:28.473 回答