专栏
标签
Syslab中如何获得低秩矩阵草图的SVD
技术分享
发布于 2024-09-11 20:37:09
查看 4过去629天

一、问题现象

Syslab中如何获得低秩矩阵草图的SVD?

二、解决方法 / 步骤

针对上述问题,可以使用svdsketch函数:
1.运行下面代码,创建一个大型随机矩阵:

using TyMath
rng = MT19937ar(1)
n = 120
S = TestArrays.randsvd(rng,n)

image.png
2.使用svdsketch函数快速计算大型矩阵A的低秩逼近的SVD:
U,S,V, = svdsketch(A)
3.可以看到,已经计算出矩阵A的低秩逼近的SVD:
image.png
4.svdsketch函数的用法:
函数库: TyMath
语法:

svdsketch(

A::AbstractArray{<:Number},

tol::Number=eps(eltype(A)^(1 / 4);

maxsubspacedimension::Integer=minimum(size(A)),

blocksize::Integer=min(max(floor(Int, 0.1 * size(A, 1)), 5), maxsubspacedimension),

maxiterations::Integer=ceil(Int, maxsubspacedimension / blocksize),

numpoweriterations=1,

)

说明:
svdsketch函数返回输入矩阵A的低秩矩阵草图的奇异值分解(SVD)。矩阵草图是一种低秩逼近,仅反映A的最重要特征(最大容差)。与使用svd相比,它能够更快地计算大型矩阵的部分SVD。
示例:

using TyMath
A = gallery("randsvd",200)
U,S.V, = svdsketch(A)

image.png

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
科学计算

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天