full
将稀疏矩阵转换为满存储
说明
示例
将稀疏矩阵转换为满存储
更改矩阵的存储格式,并比较存储要求。
创建一个随机稀疏矩阵。在 MATLAB® 中,稀疏矩阵的显示会忽略所有零,只显示非零元素的位置和值。
rng default %for reproducibility S = sprand(8,8,0.3)
S = 8x8 sparse double matrix (15 nonzeros)
(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×8
0 0 0 0 0 0.9502 0 0
0.0344 0.4387 0 0 0 0 0 0
0 0 0 0 0 0 0.3816 0
0 0 0.7655 0 0 0 0.7952 0
0 0 0 0 0 0.1869 0 0
0 0 0 0 0 0 0 0.4898
0.4456 0 0.6463 0 0 0 0 0.7094
0.7547 0 0 0.2760 0 0.6797 0.6551 0
比较两种格式的存储要求:
A
存储 64 个双精度值(每个值使用 8 个字节),占用 个字节。S
存储 15 个非零元素以及 24 个说明其位置的整数,总共占用 个字节。
whos
Name Size Bytes Class Attributes A 8x8 512 double S 8x8 312 double sparse
输入参数
S
— 要转换的稀疏矩阵
矩阵
要转换的稀疏矩阵,指定为矩阵。如果 S
已经为满矩阵,则 A
等效于 S
。
提示
如果
X
为m
×n
矩阵并且具有nz
个非零元素,则full(X)
需要用于存储m*n
个元素的空间。另一方面,sparse(X)
需要用于存储nz
个元素和(nz+n+1)
个整数的空间。矩阵的密度 (
nnz(X)/numel(X)
) 决定是否将矩阵存储为稀疏矩阵比存储为满矩阵更有效。确切的交叉点取决于矩阵类以及平台。例如,在 32 位 MATLAB® 中,密度低于 2/3 的双精度稀疏矩阵需要的空间少于满存储的相同矩阵需要的空间。但是在 64 位 MATLAB 中,非零元素少于总元素一半的双精度矩阵比稀疏矩阵具有更高的存储效率。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
full
函数完全支持 GPU 数组。要在 GPU 上运行该函数,请将输入数据指定为 gpuArray
(Parallel Computing Toolbox)。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)