zoukankan      html  css  js  c++  java
  • R 操作矩阵和计算SVD的基本操作记录

    在R中可以用函数matrix()来创建一个矩阵,应用该函数时需要输入必要的参数值。 > args(matrix) function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) data项为必要的矩阵元素,nrow为行数,ncol为列数,注意nrow与ncol的乘积应为矩阵元素个数,byrow项控制排列元素时是否按行进行,dimnames给定行和列的名称。

    a<-c(3,4,9,8,3,55,2,334)

    m<-matrix(a, byrow=T, nrow=2)

    m

    也可以用scan(),如a=scan()

    m<-matrix(a, byrow=F, nrow=21)

    > m
    [,1] [,2]
    [1,] -0.2504222 -0.06554779
    [2,] -0.1280644 -0.56722128
    [3,] 0.5754956 -0.19835075
    [4,] 1.1872865 -0.66520250
    [5,] 0.9425697 -1.04680095
    [6,] 0.8813910 -1.12941258
    [7,] 0.9349228 -0.33907873
    [8,] 1.0037492 -0.75525877
    [9,] 0.9655123 -1.17696225
    [10,] 0.9043332 -1.14958515
    [11,] 0.8584489 -0.80593043
    [12,] 0.8049172 -0.70290605
    [13,] 0.7743276 -0.33643707
    [14,] 0.5831430 -0.22836956
    [15,] 0.4378426 0.70245203
    [16,] 0.4378426 1.08645184
    [17,] 0.6596168 0.90105613
    [18,] 0.2313632 1.39240301
    [19,] -0.3498382 1.02113127
    [20,] -0.8010340 1.67097731
    [21,] -1.2675246 -0.09796806


    mean(x)和var(x),分别计算样本均值和样本方差,这两个函数分别相当于sum(x)/length(x),sum((x-mean(x)) ^2)/(length(x) -1)。如果var()的参数是一个n*p的矩阵,那么函数的值是一个p*p的样本协方差矩阵,认为每行是一个p变量的样本向量。

    因此求解协方差可以为
    var(m)

    > var(m)
    [,1] [,2]
    [1,] 0.4244522 -0.3229035
    [2,] -0.3229035 0.7926980


    将其赋值给n
    n<-m
    svd(n)即可求得svd值

    > svd(n)

    $d
    [1] 0.9802846 0.2368656

    $u
    [,1] [,2]
    [1,] -0.5023242 0.8646794
    [2,] 0.8646794 0.5023242

    $v
    [,1] [,2]
    [1,] -0.5023242 0.8646794
    [2,] 0.8646794 0.5023242

    另外可见:
    http://www.cnblogs.com/einyboy/p/3182589.html
    http://www.biostatistic.net/thread-2522-1-1.html
    http://blog.csdn.net/u013259893/article/details/40483189
  • 相关阅读:
    springCloud、springBoot学习
    企业级应用和互联网应用的去区别
    软件工程 期末总结
    四则运算
    读后感
    软件工程自评
    wc
    自我介绍
    学习javaE的目标
    基于Caffe的DeepID2实现(中)
  • 原文地址:https://www.cnblogs.com/bnuvincent/p/5896331.html
Copyright © 2011-2022 走看看