32
32
Compute the singular value decomposition (SVD) of `A` and return an `SVD` object.
33
33
34
34
`U`, `S`, `V` and `Vt` can be obtained from the factorization `F` with `F[:U]`,
35
- `F[:S]`, `F[:V]` and `F[:Vt]`, such that `A = U*diagm (S)*Vt`.
35
+ `F[:S]`, `F[:V]` and `F[:Vt]`, such that `A = U*Diagonal (S)*Vt`.
36
36
The algorithm produces `Vt` and hence `Vt` is more efficient to extract than `V`.
37
37
The singular values in `S` are sorted in descending order.
38
38
@@ -52,7 +52,7 @@ julia> A = [1. 0. 0. 0. 2.; 0. 0. 3. 0. 0.; 0. 0. 0. 0. 0.; 0. 2. 0. 0. 0.]
52
52
julia> F = svdfact(A)
53
53
Base.LinAlg.SVD{Float64,Float64,Array{Float64,2}}([0.0 1.0 0.0 0.0; 1.0 0.0 0.0 0.0; 0.0 0.0 0.0 -1.0; 0.0 0.0 1.0 0.0], [3.0, 2.23607, 2.0, 0.0], [-0.0 0.0 … -0.0 0.0; 0.447214 0.0 … 0.0 0.894427; -0.0 1.0 … -0.0 0.0; 0.0 0.0 … 1.0 0.0])
54
54
55
- julia> F[:U] * diagm (F[:S]) * F[:Vt]
55
+ julia> F[:U] * Diagonal (F[:S]) * F[:Vt]
56
56
4×5 Array{Float64,2}:
57
57
1.0 0.0 0.0 0.0 2.0
58
58
0.0 0.0 3.0 0.0 0.0
@@ -71,7 +71,7 @@ svdfact(x::Integer; thin::Bool=true) = svdfact(float(x), thin=thin)
71
71
svd(A; thin::Bool=true) -> U, S, V
72
72
73
73
Computes the SVD of `A`, returning `U`, vector `S`, and `V` such that
74
- `A == U*diagm (S)*V'`. The singular values in `S` are sorted in descending order.
74
+ `A == U*Diagonal (S)*V'`. The singular values in `S` are sorted in descending order.
75
75
76
76
If `thin=true` (default), a thin SVD is returned. For a ``M \\ times N`` matrix
77
77
`A`, `U` is ``M \\ times M`` for a full SVD (`thin=false`) and
@@ -93,7 +93,7 @@ julia> A = [1. 0. 0. 0. 2.; 0. 0. 3. 0. 0.; 0. 0. 0. 0. 0.; 0. 2. 0. 0. 0.]
93
93
julia> U, S, V = svd(A)
94
94
([0.0 1.0 0.0 0.0; 1.0 0.0 0.0 0.0; 0.0 0.0 0.0 -1.0; 0.0 0.0 1.0 0.0], [3.0, 2.23607, 2.0, 0.0], [-0.0 0.447214 -0.0 0.0; 0.0 0.0 1.0 0.0; … ; -0.0 0.0 -0.0 1.0; 0.0 0.894427 0.0 0.0])
95
95
96
- julia> U*diagm (S)*V'
96
+ julia> U*Diagonal (S)*V'
97
97
4×5 Array{Float64,2}:
98
98
1.0 0.0 0.0 0.0 2.0
99
99
0.0 0.0 3.0 0.0 0.0
@@ -266,17 +266,17 @@ function getindex(obj::GeneralizedSVD{T}, d::Symbol) where T
266
266
elseif d == :D1
267
267
m = size (obj. U, 1 )
268
268
if m - obj. k - obj. l >= 0
269
- return [eye (T, obj. k) zeros (T, obj. k, obj. l); zeros (T, obj. l, obj. k) diagm (obj. a[obj. k + 1 : obj. k + obj. l]); zeros (T, m - obj. k - obj. l, obj. k + obj. l)]
269
+ return [eye (T, obj. k) zeros (T, obj. k, obj. l); zeros (T, obj. l, obj. k) Diagonal (obj. a[obj. k + 1 : obj. k + obj. l]); zeros (T, m - obj. k - obj. l, obj. k + obj. l)]
270
270
else
271
- return [eye (T, m, obj. k) [zeros (T, obj. k, m - obj. k); diagm (obj. a[obj. k + 1 : m])] zeros (T, m, obj. k + obj. l - m)]
271
+ return [eye (T, m, obj. k) [zeros (T, obj. k, m - obj. k); Diagonal (obj. a[obj. k + 1 : m])] zeros (T, m, obj. k + obj. l - m)]
272
272
end
273
273
elseif d == :D2
274
274
m = size (obj. U, 1 )
275
275
p = size (obj. V, 1 )
276
276
if m - obj. k - obj. l >= 0
277
- return [zeros (T, obj. l, obj. k) diagm (obj. b[obj. k + 1 : obj. k + obj. l]); zeros (T, p - obj. l, obj. k + obj. l)]
277
+ return [zeros (T, obj. l, obj. k) Diagonal (obj. b[obj. k + 1 : obj. k + obj. l]); zeros (T, p - obj. l, obj. k + obj. l)]
278
278
else
279
- return [zeros (T, p, obj. k) [diagm (obj. b[obj. k + 1 : m]); zeros (T, obj. k + p - m, m - obj. k)] [zeros (T, m - obj. k, obj. k + obj. l - m); eye (T, obj. k + p - m, obj. k + obj. l - m)]]
279
+ return [zeros (T, p, obj. k) [Diagonal (obj. b[obj. k + 1 : m]); zeros (T, obj. k + p - m, m - obj. k)] [zeros (T, m - obj. k, obj. k + obj. l - m); eye (T, obj. k + p - m, obj. k + obj. l - m)]]
280
280
end
281
281
elseif d == :R
282
282
return obj. R
0 commit comments