matlab中的double(简单)

类型为啥是sparse double是什么意思?有啥区别double

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内容)。

希望对楼主有帮助,有问题欢迎追问。

温馨提示:答案为网友推荐,仅供参考
相似回答