zoukankan      html  css  js  c++  java
  • matlab学习(2)——SVD()diag()函数

    奇异值分解 (sigular value decomposition,SVD) 是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的计算时间。[U,S,V]=svd(A),其中U和V代表二个相互正交矩阵,而S代表一对角矩阵。 和QR分解法相同者, 原矩阵A不必为正方矩阵。

    使用SVD分解法的用途是解最小平方误差法和数据压缩

    s = svd(X)
    [U,S,V] = svd(X)
    [U,S,V] = svd(X,0)
    [U,S,V] = svd(X,'econ')
    描述:
    SVD命令是为了计算矩阵的奇异值分解。

    s = svd(X) 返回一个向量的奇异值.

    [U,S,V] = svd(X)

    产生一个与X维度相同的对角矩阵S,并且降序排列非负对角元素。并且酉矩阵U和V使得X = U*S*V

    [U,S,V] = svd(X,0) 

    如果X是n和m并且m > n,那么奇异值分解计算只有第一个n列U和S是n,n

    [U,S,V] = svd(X,'econ') 

    如果X是n和m并且m > n,等价于svd(X,0)

    对于m < n, 只有V的第一个m列是被计算的并且S是m*m.

    X = diag(v,k)
    以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
    例:
    >> v=[1 2 3];
    >> x=diag(v,-1)
    x =
         0     0     0     0
         1     0     0     0
         0     2     0     0
         0     0     3     0


    >> v(2:5)=2;(2到5列均赋值为2)
    >> x=diag(v,-1)

    x =

         0     0     0     0     0     0
         1     0     0     0     0     0
         0     2     0     0     0     0
         0     0     2     0     0     0
         0     0     0     2     0     0
         0     0     0     0     2     0

    我抬头仰望星空不是为了摘取流星,而是为了一个永不屈服的梦想。
  • 相关阅读:
    配置高并发jdbc连接池
    java中的sleep()和wait()的区别
    程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
    转HashMap Hashtable区别
    chrome 常用快捷操作
    sublime Text 常用操作
    flash 右键菜单隐藏与修改
    As3.0 视频缓冲、下载总结
    flash cs6 更新到Flash player15.0 及Air 更新方法
    As3.0 Interface 与类的使用
  • 原文地址:https://www.cnblogs.com/happycaoyue/p/3020758.html
Copyright © 2011-2022 走看看