健壮的稀疏数据类型

创建稀疏阵列像MATLAB的内置稀疏的类型,但健壮的某些缺陷/错误。

731下载

更新2010年10月26日

查看许可协议

这个包的主要文件,rsparse。m,创建一个稀疏阵列的一个子类的对象MATLAB的本机稀疏数据类型,但这是健壮的反对某些缺陷和错误R2009b(礼物)。

S = rsparse(变长度输入宗量)

I / O rsparse语法和选项()相同的稀疏()。

在稀疏()将返回一个双稀疏矩阵,rsparse RobustSparseDouble()将返回一个矩阵类,一个类定义在这个包中。同样,无论稀疏()将返回一个逻辑稀疏矩阵,rsparse()将返回一个矩阵RobustSparseLogical用户定义的类。

% % % % % % % % %
示例1:索引健壮性——这由布鲁诺陈德良利用sparse-sub-access包。


> > =稀疏(100000、100000、1),%本机MATLAB稀疏矩阵


一个=

(100000,100000)1


> > B = rsparse (A), %转换为强大的类型

B =

(100000,100000)1



> >谁一个B

类属性名称大小字节

100000 x100000 400016双稀疏
B 400072 x100000 100000 RobustSparseDouble



> >(逻辑(A)) = 2,由于索引错误%错误的结果

一个=

(65408,14101)2
(100000,100000)1



> > B(逻辑(B)) = 2, % ! ! !

B =

(100000,100000)2



% % % % % % % % %
示例2:鲁棒性混合数据类型操作。

出于某种原因,MATLAB决定发行一个错误当数学操作涉及稀疏和non-double数值数据尝试:

一个= speye (3);
x =单([1,2,3]);

> > y = x * %烦人....

? ? ?错误使用= = > mtimes
稀疏的单不支持数组。万博1manbetx


然而,RobustSparse类型将默默地pre-convert双打的国外数据:

B = rsparse(一个);

> > x, y = B * %更好! ! !

y =

1
2
3

% % % % % % % % % % % % % % % % % % % % % %

我希望TMW很快会解决这些问题,使这个包过时了。一旦他们这样做了,只是取代rsparse中的代码。m以下,rsparse()将成为相当于稀疏()

函数S = rsparse(变长度输入宗量)

S =稀疏(变长度输入宗量{:});

结束

包还包括“robustified”版本的其他常见sparfun工具箱的例程:rspeye, rsprand, rsprandn, rprandsym,……他们也将恢复到本地MATLAB版本时上面的替代。
% % % % % % % %


警示:

(1)因为这个包使用各种m包装内置稀疏的例程,显然是有一些妥协的速度。

(2)我重载所有数学运算符(+,-,*,> =,< =,等)和一些常见的功能像sum()、发票(),spfun(),等等……返回RobustSparse数据类型,否则返回普通稀疏的类型。

原因很明显,但是,我不能这样做对于所有函数能够返回一个稀疏矩阵(如triu,下三角阵,罪恶,因为,等),我也不能跟上TMW版本的新功能。

因此,你应该记住,B = triu (rsparse (A))和类似的将返回一个普通稀疏的原生数据类型,B,所有的漏洞。你应该照顾发布这样的结果转换成健壮的类型,通过B = rsparse (B)。或者,你认为合适,可以添加重载方法在RobustSparseDouble模仿别人。m和RobustSparseLogical.m

引用作为

马特·J (2023)。健壮的稀疏数据类型(//www.tianjin-qmedu.com/matlabcentral/fileexchange/26181-robust-sparse-data-types), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2009b
兼容任何释放
平台的兼容性
窗户 macOS Linux
类别
找到更多的在稀疏矩阵帮助中心MATLAB的答案
确认

启发:稀疏的下标访问

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!
版本 发表 发布说明
1.3.0.0

固定subsref问题。索引现在不能把列向量转化为行,反之亦然,符合规律的MATLAB。

1.2.0.0

固定问题转换RobustSparseDouble RobustSparseLogical。一些其他的修复,但非常小。

1.0.0.0