File: complex_svd.rb

package info (click to toggle)
jblas 1.2.3-5
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 30,120 kB
  • ctags: 2,710
  • sloc: java: 12,202; ansic: 4,620; ruby: 2,339; xml: 348; makefile: 159; sh: 22
file content (34 lines) | stat: -rw-r--r-- 504 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
require 'java'
require 'jblas-1.0.3.jar'

java_import 'org.jblas.ComplexDoubleMatrix'
java_import 'org.jblas.DoubleMatrix'
java_import 'org.jblas.Singular'

Matrix = ComplexDoubleMatrix

M = 4
N = 3

m = Matrix.new(M, N)

for i in 0...M
  for j in 0...N
    m.put(i, j, i+j, i*j)
    #m.put(i, j, i+j)
  end
end

puts m.dup

u, s, v = Singular.sparseSVD(m) 

s = Matrix.diag(s)

puts "u = #{u}"
puts "s = #{s}"
puts "v = #{v}"

puts u.mmul(s).mmul(v.transpose).sub(m).norm2()

puts Singular.SVDValues(m)