主要内容

满的

将稀疏矩阵转换为完全存储

描述

例子

一种=满(S.转换稀疏矩阵S.到完全存储组织,这样issparse(a)返回逻辑0.错误的)。

例子

全部收缩

更改矩阵的存储格式并比较存储要求。

创建一个随机稀疏矩阵。Matlab®中稀疏矩阵的显示省略了所有零,显示了非零元素的位置和值。

RNG.默认重复性的%s = sprand(8,8,0.3)
S =(2,1)0.0344(7,1)0.4456(8,1)0.7547(2,2)0.4387(4,3)0.7655(7,3)0.6463(8,4)0.2760(1,6)0.9502(5,6)0.1869(8,6)0.6797(3,7)0.3816(4,7)0.7952(8,7)0.6551(6,8)0.4898(7,8)0.7094

将矩阵转换为完全存储。MATLAB显示矩阵反映了新的存储格式。

a = full(s)
A =8×80.9502 0 0 0 0 0 0 0 0.0344 0.4387 0 0 0 0 0 0 0 0 0 0 0 0 0.3816 0.7952 0.7655 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1869 0.4898 0.4456 0.6463 0 0 0 0 0 0.7094 0.7547 0.2760 0 0 0 0.6797 - 0.6551 0

比较两种格式的存储要求:

  • 一种使用存储64个双打(每个8个字节),或 64. 8. = 512. 字节。

  • S.使用存储15个非零元素,以及总共描述其位置的24个整数 39. 8. = 312. 字节。

谁是
名称大小字节类属性a 8x8 512双s 8x8 312双稀疏

输入参数

全部收缩

要转换的稀疏矩阵,指定为矩阵。如果S.已经是一个完整的矩阵,那么一种与之相同S.

提示

  • 如果X是一个m-经过-N矩阵与NZ.非零元素,然后完整(x)需要空间存放m * n元素。另一方面,稀疏(x)需要空间存放NZ.元素和(NZ + N + 1)整数。

    矩阵的密度(nnz(x)/ numel(x))确定将矩阵存储为稀疏或满更有效。确切的交叉点取决于矩阵类以及平台。例如,在32位matlab中®,小于约2/3密度的双稀疏矩阵需要比完全存储的相同矩阵的空间少。然而,在64位Matlab中,具有少于一半的元素非零的双矩阵更有效地存储为稀疏矩阵。

扩展能力

C / C ++代码生成
使用MATLAB®Coder™生成C和C ++代码。

也可以看看

|

在R2006A之前介绍