22.1.3寻找稀疏矩阵的信息

有许多函数允许获得与稀疏矩阵有关的信息。其中最基本的是issparse其标识特定的八度体对象是否实际上是稀疏矩阵。

另一个非常基本的函数是nnz返回稀疏矩阵中的非ero项的数量,而函数nzmax返回赋值给稀疏矩阵的存储量。请注意,Octave倾向于一有机会就为稀疏对象裁剪未使用的内存。在某些情况下,用户创建的sparse对象的值从nzmax不会和nnz,但总的来说,他们会给出相同的结果。函数spstats返回稀疏矩数组的一些基本统计信息,包括元素数、每列的均值和方差。

 
: tf = issparse (x)

如果返回truex是一个稀疏矩阵。

详见: ismatrix.

 
: n = nnz (A)

返回中的非零元素数A.

详见: nzmax, 非零, 查找.

 
: v = nonzeros (A)

返回矩阵的非零值的列向量A.

详见: 查找, nnz.

 
: n = nzmax (SM)

返回赋值给稀疏矩阵的存储量SM.

编程注意事项:Octave倾向于在第一次机会为稀疏对象裁剪未使用的内存。因此,一般来说nzmax将与nnz,但用户创建的稀疏对象的某些情况除外。

此外,请注意Octave始终为至少一个值保留存储空间。因此,对于空矩阵nnz将返回0,但是nzmax将返回1。

详见: nnz, 散裂, 稀疏的.

 
: [count, mean, var] = spstats (S)
: [count, mean, var] = spstats (S, j)

返回稀疏矩阵的非零元素的统计信息S.

计数是每列中非零的数量,意思是是每列中非零的平均值,以及var是每列中非零的方差。

使用两个输入参数调用,如果S是数据和j是数据的二进制数,计算每个bin的统计数据。在这种情况下,bin可以包含零的数据值,而使用spstats(S)零可能会消失。

在求解涉及稀疏矩阵的线性方程时,Octave确定了基于矩阵类型求解方程的方法(详见稀疏矩阵上的线性代数). 当div(/)或ldiv(\)运算符首次用于矩阵,然后缓存该类型时,Octave会探测矩阵类型。然而矩阵类型函数可用于在使用div或ldiv运算符之前确定稀疏矩阵的类型。例如

a=tril(sprandn(1024、1024、0.02),-1)…+speye(1024);matrix_type(a);ans=更低

表明Octave正确地确定了下三角矩阵的矩阵类型。矩阵类型也可以用于强制矩阵的类型为特定类型。例如

a=matrix_type(tril(sprandn(1024,…1024,0.02),-1)+speye(1024),“Lower”);

这使得确定矩阵类型的成本得以降低。然而,错误地定义矩阵类型将导致线性方程组解的正确结果,因此正确识别矩阵类型完全是用户的责任

有几种图形方法可以找出关于稀疏矩阵的信息。第一个是间谍命令,它显示矩阵的非零元素的结构体。详见图22.1,例如使用间谍。可以使用获得更高级的图形信息树状图, etreeplotgplot命令。

spmatrix

图22.1:简单稀疏矩阵的结构体。

稀疏矩阵的一个用途是在图论中,其中节点之间的互连表示为邻接矩阵。也就是说,如果图中的第i个节点连接到第j个节点。则稀疏邻接矩阵的第i个节点(在无向图的情况下,第j个节点)是非零的。如果每个节点都与一组坐标相关联,那么gplot命令可用于以图形方式显示节点之间的互连。

作为使用的一个琐碎示例gplot考虑该示例,

A=稀疏([2,6,1,3,2,4,5,4,6,1,5],[1,1,2,3,3,4,4,5,6,6],1,6,6);xy=[0,4,8,6,4,2;5,0,5,7,7]';gplot(A,xy)

它创建了一个邻接矩阵A.其中节点1与节点2和6相连,节点2与节点1和3相连,等等。节点的坐标在n-by-2矩阵中给出xy详见图22.2.

gplot

图22.2:的简单使用gplot命令

Cholesky因子分解的节点之间的依赖性可以在线性时间内计算,而无需通过etree命令此命令返回矩阵的消去树,并可通过命令以图形方式显示树状图如果A.对称或树状图(etree(A+A'))否则

 
: spy (x)
: spy (…, markersize)
: spy (…, line_spec)

绘制稀疏矩阵的稀疏模式x.

如果可选的数字参数符号化它确定了绘图中使用的符号的大小。

如果可选字符串行_规范已将其传递给plot并确定绘图的外观。

详见: 情节, gplot.

 
: p = etree (S)
: p = etree (S, typ)
: [p, q] = etree (S, typ)

返回矩阵的消去树S.

默认情况下S被假定为对称的,并且返回对称消去树。参数type控制是否返回对称或列消除树。的有效值typesymcol,分别用于对称或列消去树。

用第二个参数调用,etree还返回树上的排序后排列。

 
: etreeplot (A)
: etreeplot (A, node_style, edge_style)

绘制矩阵的消去树AA+A如果A不对称。

可选参数节点样式边缘样式定义输出样式。

详见: 树状图, gplot.

 
: gplot (A, xy)
: gplot (A, xy, line_style)
: [x, y] = gplot (A, xy)

绘制从定义的图形Axy在图论意义上。

A是要绘制的数组的邻接矩阵,以及xyisann-by-2矩阵,包含图的节点的坐标。

可选参数线条样式定义批次的输出样式。在没有输出参数的情况下调用,则直接绘制图形。否则,返回中的绘图坐标xy.

详见: 树状图, etreeplot, 间谍.

 
: treeplot (tree)
: treeplot (tree, node_style, edge_style)

制作树木或森林的图形。

第一个参数是前人的向量。

可选参数节点样式边缘样式定义输出打印样式。

就时间和内存需求而言,该算法的复杂性为O(n)。

详见: etreeplot, gplot.

 
: [x, y] = treelayout (tree)
: [x, y] = treelayout (tree, permutation)
: [x, y, h, s] = treelayout (…)

树布局布局一棵树或一片森林。

第一个参数是前辈的向量。

可选参数置换是一个后序排列。

就时间和内存需求而言,该算法的复杂性为O(n)。

详见: etreeplot, gplot, 树状图.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号