【发布时间】:2017-03-15 19:07:41
【问题描述】:
在 R 的 svd() 函数文档中,底部有一个示例。
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, "+") }
X <- hilbert(9)[, 1:6]
我想设置的不是默认输入值
- nu = 行数
- nv = 列数
所以我跑了
s = svd(X, nu = dim(X)[1], nv = dim(X)[2])
这里是“s”中矩阵的维度。
> str(s)
List of 3
$ d: num [1:6] 1.67 2.77e-01 2.22e-02 1.08e-03 3.24e-05 ...
$ u: num [1:9, 1:9] -0.724 -0.428 -0.312 -0.248 -0.206 ...
$ v: num [1:6, 1:6] -0.736 -0.443 -0.327 -0.263 -0.22 ...
我希望 d 的长度为 9,但它的长度却是 6。为什么?
【问题讨论】:
-
因为
svd只返回非零奇异值。如果您的矩阵最多为 n×m,则它可以具有 min(n,m) 个非零奇异值。 -
感谢欧内斯特 A,您的明确回答!您应该将您的评论作为答案,并获得您应得的荣誉。