You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中将SVD计算得到的Sigma值组装为对角矩阵的方法

Julia SVD结果快速生成Sigma对角矩阵的方法

在Julia中调用LinearAlgebra标准库的svd函数做奇异值分解时,返回的结果对象已经提前把所有奇异值按降序整理成了一维向量,完全不需要手动逐一键入奇异值,根据你需要的Sigma矩阵规格,直接用下面两种方法即可:

  • 生成和奇异值数量匹配的方阵Sigma
    svd返回的结果结构体的S字段,就是存储全部奇异值的一维向量,而Diagonal构造函数原生支持直接传入一维向量作为对角线元素,不需要手动拆分向量逐值传参,直接把这个字段传入就行,代码示例:

    using LinearAlgebra
    # 以4行3列的随机测试矩阵为例
    A = rand(4, 3)
    svd_res = svd(A)
    # 直接生成3×3的对角方阵Sigma,对角线元素就是排序好的奇异值
    Sigma_square = Diagonal(svd_res.S)
    

    这个写法对任意维度的输入矩阵都生效,不需要关心奇异值的具体个数。

  • 生成和原矩阵A同维度的m×n规格Sigma
    如果你需要的是可以直接和U、Vt相乘还原原矩阵的非方阵对角Sigma(和A的行数列数完全一致),可以调用diagm函数,传入原矩阵的行列数和奇异值向量即可,不需要手动填充非对角位置的0元素:

    m, n = size(A)
    # 生成4行3列的Sigma矩阵,对角线为奇异值,其余位置为0
    Sigma_full = diagm(m, n, svd_res.S)
    

    可以直接做乘法验证还原效果:svd_res.U * Sigma_full * svd_res.Vt ≈ A 会返回true,误差在浮点计算允许范围内。

内容的提问来源于stack exchange,提问作者James Rider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 07:15:39