专栏
标签
Syslab 中如何获得低秩矩阵草图的 SVD?
技术分享
发布于 2025-07-18 09:34:22
查看 1过去319天

针对上述问题,可以使用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天