sparse double是稀疏存储方式的双精度浮点数(矩阵)。
所谓稀疏矩阵,是指大多数元素为0的矩阵。这种矩阵如果采用常规的存储方式,会造成大量空间的浪费,而计算时也会因大量的0元素加减这样的无意义运算而造成效率很低。MATLAB中提供了稀疏存储的方式,就是sparse。
创建稀疏矩阵通常直接使用sparse函数,例如
S = sparse(1:n,1:n,1);
会创建一个n×n的单位阵,而
B = sparse(10000,10000,pi)
会创建一个10000x10000的矩阵,该矩阵仅右下角元素的值为pi,其它元素全为0。
矩阵的稀疏存储和常规存储方式可以通过sparse函数和full函数相互转换,例如,前面创建n阶单位阵的例子也可以通过这样的做法来实现:
S = sparse(eye(n,n));
不过,后面这种方式需要创建一个临时的常规存储的单位阵,可能会造成大量空间消耗甚至导致内存不足。对于前面创建的稀疏矩阵B,不要尝试使用
full(B)
将其转换为常规存储方式,因为那样需要800M的内存。
关于稀疏矩阵应用的实例,我前不久回答的一个问题就用到了,有兴趣可以参考:
http://zhidao.baidu.com/question/572466904.html?oldq=1
关于稀疏矩阵的一般概念,可参考
http://en.wikipedia.org/wiki/Sparse_matrix
关于MATLAB中稀疏矩阵更多的信息,可参考文档中相关章节(用户手册中有专门的Sparse Matrices内容)。
希望对楼主有帮助,有问题欢迎追问。
广告 您可能关注的内容 |