找回密码
 注册
Simdroid-非首页
查看: 91|回复: 5

稀疏矩阵的伪逆?

[复制链接]
发表于 2009-12-13 21:37:16 | 显示全部楼层 |阅读模式 来自 浙江杭州
pinv()只能求密实矩阵,对稀疏的有什么办法吗?
发表于 2009-12-14 12:43:29 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
可以用svds命令
回复 不支持

使用道具 举报

 楼主| 发表于 2010-1-4 15:39:22 | 显示全部楼层 来自 浙江杭州
本帖最后由 huliang8439 于 2010-1-4 17:29 编辑
可以用svds命令
messenger 发表于 2009-12-14 12:43


谢谢版主!我知道求pinv 是用到了svd命令。
但svds命令只是返回6个最大值,或者指定个,如果我用svds替换掉
matlab 的help里面这么写的:
    Note: SVDS is best used to find a few singular values of a large,
    sparse matrix.  To find all the singular values of such a matrix,
    SVD(FULL(A)) will usually perform better than SVDS(A,MIN(SIZE(A))).
就是说用svds求大型稀疏矩阵的所有奇异值效果不好。
有办法吗?我想借由稀疏矩阵的奇异值进而求出pinv 或者是零空间正交基null

还请版主详细指点下,我线性代数不是很好
回复 不支持

使用道具 举报

发表于 2010-1-4 21:37:11 | 显示全部楼层 来自 浙江杭州
试了一下,用SVDS(A,MIN(SIZE(A)))也可以求解,没看出来哪不好。当然如果你的矩阵不是很大,最好用SVD(FULL(A)),但用不了这个命令时,只好用SVDS(A,MIN(SIZE(A)))了。
Mathworks的File exchange中还有一个用户编写的pinv命令可以求解稀疏矩阵,你也可以试试,不过我还是觉得用Matlab自带的命令比较好。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-1-5 12:43:09 | 显示全部楼层 来自 浙江杭州
试了一下,用SVDS(A,MIN(SIZE(A)))也可以求解,没看出来哪不好。当然如果你的矩阵不是很大,最好用SVD(FULL(A)),但用不了这个命令时,只好用SVDS(A,MIN(SIZE(A)))了。
Mathworks的File exchange中还有一个用户编写 ...
messenger 发表于 2010-1-4 21:37


是可以求解,但效率差别相当大,我试了一下
m文件代码如下

a=sprand(1000,1000,0.01);
b=full(a);
tic
svd(b);
toc
clear
a=sprand(1000,1000,0.01);
b=full(a);
tic
svds(a,min(size(a)));
toc

运行结果如下:
>> testsvds
Elapsed time is 2.253222 seconds.
Elapsed time is 91.249301 seconds.

差了45倍呢!!!
而如果只用svds(a),只求出前面几个奇异值的话,速度还比较快,
Elapsed time is 0.707565 seconds.
就说svds只适合求大型稀疏矩阵的少数几个奇异值。

其实我只是想求出稀疏的 奇次线性方程组的通解的正交基
matlab里面可以直接用null(),但null其实也是调用了svd,不能处理
稀疏矩阵。版主还有其它途径吗?
回复 不支持

使用道具 举报

发表于 2010-1-5 14:02:18 | 显示全部楼层 来自 浙江杭州
试试上面说的File exchange里的第三方软件包吧,http://www.mathworks.com/matlabc ... 5453-pseudo-inverse,不过没用过,效率如何只能你自己做小白鼠。

试过以后能在本版把经验共享就更好了。

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 03:27 , Processed in 0.048229 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表