mdarray 0.5.4-java → 0.5.5-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE.txt +35 -16
- data/README.md +180 -234
- data/lib/colt/matrix/algebra.rb +466 -0
- data/lib/colt/matrix/colt_matrix.rb +161 -220
- data/lib/colt/matrix/creation.rb +374 -0
- data/lib/colt/matrix/{matrix_hierarchy.rb → hierarchy.rb} +78 -99
- data/lib/colt/matrix/property.rb +363 -0
- data/lib/mdarray/views.rb +46 -1
- data/test/colt/matrix/test_complete.rb +29 -0
- data/test/colt/{test_matrix.rb → matrix/test_creation.rb} +26 -3
- data/test/colt/{test_double_matrix2d.rb → matrix/test_matrix1d_floatingalgebra.rb} +86 -84
- data/test/colt/matrix/test_matrix2d_fixpointalgebra.rb +531 -0
- data/test/colt/matrix/test_matrix2d_floatingalgebra.rb +693 -0
- data/test/colt/matrix/test_operations.rb +120 -0
- data/test/colt/matrix/test_properties.rb +649 -0
- data/test/colt/test_complete.rb +1 -1
- data/test/complete.rb +12 -7
- data/test/mdarray/test_views.rb +55 -0
- data/vendor/{incanter.jar → mdarray.jar} +0 -0
- data/version.rb +1 -1
- metadata +22 -16
- data/lib/colt/matrix/matrix2D_floating_algebra.rb +0 -325
- data/test/colt/test_float_matrix2d.rb +0 -171
- data/vendor/commons-compiler.jar +0 -0
- data/vendor/janino.jar +0 -0
data/test/colt/test_complete.rb
CHANGED
data/test/complete.rb
CHANGED
@@ -21,14 +21,19 @@
|
|
21
21
|
|
22
22
|
require 'env.rb'
|
23
23
|
|
24
|
-
require 'mdarray/test_complete'
|
25
|
-
require 'colt/test_complete'
|
26
|
-
require 'netcdf/test_complete'
|
24
|
+
require 'mdarray/test_complete'
|
25
|
+
require 'colt/test_complete'
|
26
|
+
require 'netcdf/test_complete'
|
27
27
|
|
28
28
|
|
29
29
|
# Temporary tests. Remove before shipping!
|
30
30
|
|
31
|
-
# require 'colt/
|
32
|
-
|
33
|
-
# require '
|
34
|
-
# require '
|
31
|
+
# require 'colt/matrix/test_complete'
|
32
|
+
|
33
|
+
# require 'colt/matrix/test_matrix2d_floatingalgebra'
|
34
|
+
# require 'colt/matrix/test_matrix2d_fixpointalgebra'
|
35
|
+
|
36
|
+
# require 'colt/matrix/test_matrix1d_floatingalgebra'
|
37
|
+
# require 'colt/matrix/test_matrix1d_fixpointalgebra'
|
38
|
+
|
39
|
+
# require 'colt/matrix/test_properties'
|
data/test/mdarray/test_views.rb
CHANGED
@@ -179,6 +179,61 @@ class MDArrayTest < Test::Unit::TestCase
|
|
179
179
|
|
180
180
|
end
|
181
181
|
|
182
|
+
#-------------------------------------------------------------------------------------
|
183
|
+
# Regions and sections are the same functionality with a different interface
|
184
|
+
#-------------------------------------------------------------------------------------
|
185
|
+
|
186
|
+
should "get array regions" do
|
187
|
+
|
188
|
+
# 1 -> first year (only 1 year)
|
189
|
+
# 20 -> 20 days
|
190
|
+
# 10 -> number os secs
|
191
|
+
# 7 - > number of values
|
192
|
+
|
193
|
+
# b is a section of @a, starting at position (0) and taking only the first two
|
194
|
+
# elements of the first dimension. Getting all values, for all secs for the first
|
195
|
+
# 2 days
|
196
|
+
# b = @a.section([0, 0, 0, 0], [1, 2, 10, 7])
|
197
|
+
b = @a.region(:spec => "0:0, 0:1, 0:9, 0:6")
|
198
|
+
assert_equal(true, b.section?)
|
199
|
+
assert_equal([1, 2, 10, 7], b.shape)
|
200
|
+
ind = b.get_index
|
201
|
+
ind.each do |elmt|
|
202
|
+
assert_equal(@a.get(elmt), b.get(elmt))
|
203
|
+
end
|
204
|
+
|
205
|
+
|
206
|
+
# getting "open" for the first 2 days of the 2nd sec. Values are organized
|
207
|
+
# as follows:
|
208
|
+
# (open, close, high, low, volume, e1, e2).
|
209
|
+
# Start at: [0, 0, 3, 0] =>
|
210
|
+
# 0 -> first year, 0 -> first day, 3 -> 2nd sec, 0 -> first value
|
211
|
+
# Specification: [1, 2, 1, 1] =>
|
212
|
+
# 1 -> get only first year, 2 -> take 2 days from day 0 to day 1,
|
213
|
+
# 1 -> take one security, already selected the 2nd one, 1 -> only one value
|
214
|
+
# in this case the first one was selected.
|
215
|
+
# b = @a.section([0, 0, 3, 0], [1, 2, 1, 1])
|
216
|
+
b = @a.region(:spec => "0:0, 0:1, 3:3, 0:0")
|
217
|
+
assert_equal(40.00, b[0, 0, 0, 0])
|
218
|
+
assert_equal(41.00, b[0, 1, 0, 0])
|
219
|
+
|
220
|
+
|
221
|
+
# getting "close" (2nd) value of the 3rd sec for the second day with
|
222
|
+
# shape reduction. Note that in this case, with shape reduction, b is a
|
223
|
+
# number and not an array any more
|
224
|
+
# b = @a.section([0, 1, 2, 1], [1, 1, 1, 1], true)
|
225
|
+
b = @a.region(:origin => [0, 1, 2, 1], :shape => [1, 1, 1, 1], :reduce => true)
|
226
|
+
assert_equal(@a[0, 1, 2, 1], b)
|
227
|
+
|
228
|
+
# getting the "close" (2nd) value of the 3rd sec for the second day without
|
229
|
+
# shape reduction
|
230
|
+
# b = @a.section([0, 1, 2, 1], [1, 1, 1, 1])
|
231
|
+
b = @a.region(:origin => [0, 1, 2, 1], :size => [1, 1, 1, 1], :stride => [1, 1, 1, 1])
|
232
|
+
assert_equal([1, 1, 1, 1], b.shape)
|
233
|
+
assert_equal(@a[0, 1, 2, 1], b[0, 0, 0, 0])
|
234
|
+
|
235
|
+
end
|
236
|
+
|
182
237
|
#-------------------------------------------------------------------------------------
|
183
238
|
# each_along_axes returns sub-arrays (sections) of the original array. Each section
|
184
239
|
# is taken by walking along the given axis and getting all elements of the
|
Binary file
|
data/version.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
$gem_name = "mdarray"
|
2
|
-
$version="0.5.
|
2
|
+
$version="0.5.5"
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: mdarray
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.5.
|
5
|
+
version: 0.5.5
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- Rodrigo Botafogo
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: map
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
version: '0'
|
43
43
|
none: false
|
44
44
|
prerelease: false
|
45
|
-
type: :
|
45
|
+
type: :development
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: simplecov
|
48
48
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -94,10 +94,11 @@ dependencies:
|
|
94
94
|
description: "\"MDArray is a multi dimensional array implemented for JRuby inspired\
|
95
95
|
\ by NumPy (www.numpy.org) and \nMasahiro Tanaka´s Narray (narray.rubyforge.org).\
|
96
96
|
\ MDArray stands on the shoulders of Java-NetCDF \nand Parallel Colt. At this\
|
97
|
-
\ point MDArray has libraries for mathematical,
|
98
|
-
\ statistics methods.\n\nNetCDF-Java Library is a Java interface
|
99
|
-
\ as well as to many other types of \nscientific data formats
|
100
|
-
\ and distributed by Unidata (http://www.unidata.ucar.edu). \n\
|
97
|
+
\ point MDArray has libraries for linear algebra, mathematical, \ntrigonometric\
|
98
|
+
\ and descriptive statistics methods.\n\nNetCDF-Java Library is a Java interface\
|
99
|
+
\ to NetCDF files, as well as to many other types of \nscientific data formats.\
|
100
|
+
\ It is developed and distributed by Unidata (http://www.unidata.ucar.edu). \n\n\
|
101
|
+
Parallel Colt (http://grepcode.com/snapshot/repo1.maven.org/maven2/net.sourceforge.parallelcolt/\n\
|
101
102
|
parallelcolt/0.10.0/) is a multithreaded version of Colt (http://acs.lbl.gov/software/colt/).\
|
102
103
|
\ \nColt provides a set of Open Source Libraries for High Performance Scientific\
|
103
104
|
\ and Technical \nComputing in Java. Scientific and technical computing is characterized\
|
@@ -122,9 +123,11 @@ files:
|
|
122
123
|
- lib/colt/double_descriptive.rb
|
123
124
|
- lib/colt/probability.rb
|
124
125
|
- lib/colt/stat_list.rb
|
126
|
+
- lib/colt/matrix/algebra.rb
|
125
127
|
- lib/colt/matrix/colt_matrix.rb
|
126
|
-
- lib/colt/matrix/
|
127
|
-
- lib/colt/matrix/
|
128
|
+
- lib/colt/matrix/creation.rb
|
129
|
+
- lib/colt/matrix/hierarchy.rb
|
130
|
+
- lib/colt/matrix/property.rb
|
128
131
|
- lib/mdarray/access.rb
|
129
132
|
- lib/mdarray/counter.rb
|
130
133
|
- lib/mdarray/creation.rb
|
@@ -158,12 +161,16 @@ files:
|
|
158
161
|
- test/complete.rb
|
159
162
|
- test/env.rb
|
160
163
|
- test/colt/test_complete.rb
|
161
|
-
- test/colt/test_double_matrix2d.rb
|
162
|
-
- test/colt/test_float_matrix2d.rb
|
163
164
|
- test/colt/test_math.rb
|
164
|
-
- test/colt/test_matrix.rb
|
165
165
|
- test/colt/test_statistics.rb
|
166
166
|
- test/colt/test_stat_list.rb
|
167
|
+
- test/colt/matrix/test_complete.rb
|
168
|
+
- test/colt/matrix/test_matrix1d_floatingalgebra.rb
|
169
|
+
- test/colt/matrix/test_matrix2d_fixpointalgebra.rb
|
170
|
+
- test/colt/matrix/test_matrix2d_floatingalgebra.rb
|
171
|
+
- test/colt/matrix/test_operations.rb
|
172
|
+
- test/colt/matrix/test_properties.rb
|
173
|
+
- test/colt/matrix/test_creation.rb
|
167
174
|
- test/mdarray/arithmetic_casting.rb
|
168
175
|
- test/mdarray/test_access.rb
|
169
176
|
- test/mdarray/test_boolean.rb
|
@@ -255,16 +262,15 @@ files:
|
|
255
262
|
- doc/MDArray/IteratorFastInt.html
|
256
263
|
- doc/MDArray/IteratorFastLong.html
|
257
264
|
- doc/MDArray/IteratorFastShort.html
|
258
|
-
- vendor/commons-compiler.jar
|
259
|
-
- vendor/incanter.jar
|
260
|
-
- vendor/janino.jar
|
261
265
|
- vendor/netcdfAll-4.3.18.jar
|
266
|
+
- vendor/mdarray.jar
|
262
267
|
- target/helper.jar
|
263
268
|
- README.md
|
264
269
|
- LICENSE.txt
|
265
270
|
- LICENSE.txt~
|
266
271
|
homepage: http://github.com/rbotafogo/mdarray/wiki
|
267
|
-
licenses:
|
272
|
+
licenses:
|
273
|
+
- BSD 2-clause
|
268
274
|
post_install_message:
|
269
275
|
rdoc_options: []
|
270
276
|
require_paths:
|
@@ -1,325 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
##########################################################################################
|
4
|
-
# Copyright © 2013 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
|
5
|
-
# and distribute this software and its documentation for educational, research, and
|
6
|
-
# not-for-profit purposes, without fee and without a signed licensing agreement, is hereby
|
7
|
-
# granted, provided that the above copyright notice, this paragraph and the following two
|
8
|
-
# paragraphs appear in all copies, modifications, and distributions. Contact Rodrigo
|
9
|
-
# Botafogo - rodrigo.a.botafogo@gmail.com for commercial licensing opportunities.
|
10
|
-
#
|
11
|
-
# IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
|
12
|
-
# INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
|
13
|
-
# THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
|
14
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
-
#
|
16
|
-
# RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
17
|
-
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
18
|
-
# SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
|
19
|
-
# RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
20
|
-
# OR MODIFICATIONS.
|
21
|
-
##########################################################################################
|
22
|
-
|
23
|
-
# require 'jruby/core_ext'
|
24
|
-
|
25
|
-
require 'java'
|
26
|
-
|
27
|
-
##########################################################################################
|
28
|
-
#
|
29
|
-
##########################################################################################
|
30
|
-
|
31
|
-
module Matrix2DFloatingAlgebra
|
32
|
-
include_package "cern.colt.matrix.tdouble.algo"
|
33
|
-
include_package "cern.colt.matrix.tfloat.algo"
|
34
|
-
|
35
|
-
#------------------------------------------------------------------------------------
|
36
|
-
# Solves the upper triangular system U*x=b;
|
37
|
-
#------------------------------------------------------------------------------------
|
38
|
-
|
39
|
-
def backward_solve(matrix1D)
|
40
|
-
result = @algebra.backwardSolve(@colt_matrix, matrix1D.colt_matrix)
|
41
|
-
MDMatrix.from_colt_matrix(result)
|
42
|
-
end
|
43
|
-
|
44
|
-
#------------------------------------------------------------------------------------
|
45
|
-
# Constructs and returns the cholesky-decomposition of the given matrix. For a
|
46
|
-
# symmetric, positive definite matrix A, the Cholesky decomposition is a lower
|
47
|
-
# triangular matrix L so that A = L*L'; If the matrix is not symmetric positive
|
48
|
-
# definite, the IllegalArgumentException is thrown.
|
49
|
-
#------------------------------------------------------------------------------------
|
50
|
-
|
51
|
-
def chol
|
52
|
-
result = @algebra.chol(@colt_matrix).getL()
|
53
|
-
MDMatrix.from_colt_matrix(result)
|
54
|
-
end
|
55
|
-
|
56
|
-
#------------------------------------------------------------------------------------
|
57
|
-
# Returns the condition of matrix A, which is the ratio of largest to smallest
|
58
|
-
# singular value.
|
59
|
-
#------------------------------------------------------------------------------------
|
60
|
-
|
61
|
-
def cond
|
62
|
-
@algebra.cond(@colt_matrix)
|
63
|
-
end
|
64
|
-
|
65
|
-
#------------------------------------------------------------------------------------
|
66
|
-
# Returns the determinant of matrix A.
|
67
|
-
#------------------------------------------------------------------------------------
|
68
|
-
|
69
|
-
def det
|
70
|
-
@algebra.det(@colt_matrix)
|
71
|
-
end
|
72
|
-
|
73
|
-
#------------------------------------------------------------------------------------
|
74
|
-
#
|
75
|
-
#------------------------------------------------------------------------------------
|
76
|
-
|
77
|
-
def eig
|
78
|
-
eig = @algebra.eig(@colt_matrix)
|
79
|
-
[MDMatrix.from_colt_matrix(eig.getD),
|
80
|
-
MDMatrix.from_colt_matrix(eig.getImagEigenvalues),
|
81
|
-
MDMatrix.from_colt_matrix(eig.getRealEigenvalues),
|
82
|
-
MDMatrix.from_colt_matrix(eig.getV)]
|
83
|
-
end
|
84
|
-
|
85
|
-
#------------------------------------------------------------------------------------
|
86
|
-
# Solves the lower triangular system L*x=b;
|
87
|
-
#------------------------------------------------------------------------------------
|
88
|
-
|
89
|
-
def forward_solve(matrix1D)
|
90
|
-
result = @algebra.forwardSolve(@colt_matrix, matrix1D.colt_matrix)
|
91
|
-
MDMatrix.from_colt_matrix(result)
|
92
|
-
end
|
93
|
-
|
94
|
-
#------------------------------------------------------------------------------------
|
95
|
-
# Returns the inverse or pseudo-inverse of matrix A.
|
96
|
-
#------------------------------------------------------------------------------------
|
97
|
-
|
98
|
-
def inverse
|
99
|
-
result = @algebra.inverse(@colt_matrix)
|
100
|
-
MDMatrix.from_colt_matrix(result)
|
101
|
-
end
|
102
|
-
|
103
|
-
#------------------------------------------------------------------------------------
|
104
|
-
# Computes the Kronecker product of two real matrices.
|
105
|
-
#------------------------------------------------------------------------------------
|
106
|
-
|
107
|
-
def kron(matrix)
|
108
|
-
|
109
|
-
if (matrix.rank != 2)
|
110
|
-
raise "Rank should be 2"
|
111
|
-
end
|
112
|
-
result = @algebra.kron(@colt_matrix, matrix.colt_matrix)
|
113
|
-
MDMatrix.from_colt_matrix(result)
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
#------------------------------------------------------------------------------------
|
118
|
-
# Constructs and returns the LU-decomposition of the given matrix.
|
119
|
-
#------------------------------------------------------------------------------------
|
120
|
-
|
121
|
-
def lu
|
122
|
-
result = @algebra.lu(@colt_matrix)
|
123
|
-
[result.isNonsingular(), result.det(), result.getPivot.to_a(),
|
124
|
-
MDMatrix.from_colt_matrix(result.getL()),
|
125
|
-
MDMatrix.from_colt_matrix(result.getU())]
|
126
|
-
end
|
127
|
-
|
128
|
-
#------------------------------------------------------------------------------------
|
129
|
-
# Multiplies this matrix by another matrix
|
130
|
-
#------------------------------------------------------------------------------------
|
131
|
-
|
132
|
-
def mult(matrix)
|
133
|
-
|
134
|
-
if (matrix.rank > 2)
|
135
|
-
raise "Rank should be 1 or 2"
|
136
|
-
end
|
137
|
-
|
138
|
-
result = @colt_matrix.like
|
139
|
-
@colt_matrix.zMult(matrix.colt_matrix, result)
|
140
|
-
MDMatrix.from_colt_matrix(result)
|
141
|
-
|
142
|
-
end
|
143
|
-
|
144
|
-
alias :* :mult
|
145
|
-
|
146
|
-
#------------------------------------------------------------------------------------
|
147
|
-
# Returns the one-norm of vector x, which is Sum(abs(x[i])).
|
148
|
-
#------------------------------------------------------------------------------------
|
149
|
-
|
150
|
-
def norm1
|
151
|
-
@algebra.norm1(@colt_matrix)
|
152
|
-
end
|
153
|
-
|
154
|
-
#------------------------------------------------------------------------------------
|
155
|
-
# Returns the two-norm of matrix A, which is the maximum singular value; obtained
|
156
|
-
# from SVD.
|
157
|
-
#------------------------------------------------------------------------------------
|
158
|
-
|
159
|
-
def norm2
|
160
|
-
@algebra.norm2(@colt_matrix)
|
161
|
-
end
|
162
|
-
|
163
|
-
#------------------------------------------------------------------------------------
|
164
|
-
# Returns the Frobenius norm of matrix A, which is Sqrt(Sum(A[i,j]^2))
|
165
|
-
#------------------------------------------------------------------------------------
|
166
|
-
|
167
|
-
def normF
|
168
|
-
@algebra.normF(@colt_matrix)
|
169
|
-
end
|
170
|
-
|
171
|
-
#------------------------------------------------------------------------------------
|
172
|
-
# Returns the infinity norm of matrix A, which is the maximum absolute row sum.
|
173
|
-
#------------------------------------------------------------------------------------
|
174
|
-
|
175
|
-
def norm_infinity
|
176
|
-
@algebra.normInfinity(@colt_matrix)
|
177
|
-
end
|
178
|
-
|
179
|
-
#------------------------------------------------------------------------------------
|
180
|
-
# Linear algebraic matrix power; B = A^k <==> B = A*A*...
|
181
|
-
#------------------------------------------------------------------------------------
|
182
|
-
|
183
|
-
def power(val)
|
184
|
-
result = @algebra.pow(@colt_matrix, val)
|
185
|
-
MDMatrix.from_colt_matrix(result)
|
186
|
-
end
|
187
|
-
|
188
|
-
alias :** :power
|
189
|
-
|
190
|
-
#------------------------------------------------------------------------------------
|
191
|
-
# Returns the effective numerical rank of matrix A, obtained from Singular Value
|
192
|
-
# Decomposition.
|
193
|
-
#------------------------------------------------------------------------------------
|
194
|
-
|
195
|
-
def numerical_rank
|
196
|
-
@algebra.rank(@colt_matrix)
|
197
|
-
end
|
198
|
-
|
199
|
-
#------------------------------------------------------------------------------------
|
200
|
-
# Solves A*X = B
|
201
|
-
#------------------------------------------------------------------------------------
|
202
|
-
|
203
|
-
def solve(matrix)
|
204
|
-
result = @algebra.solve(@colt_matrix, matrix.colt_matrix)
|
205
|
-
MDMatris.from_colt_matrix(resul)
|
206
|
-
end
|
207
|
-
|
208
|
-
#------------------------------------------------------------------------------------
|
209
|
-
# Solves X*A = B, which is also A'*X' = B'.
|
210
|
-
#------------------------------------------------------------------------------------
|
211
|
-
|
212
|
-
def solve_transpose(matrix)
|
213
|
-
result = @algebra.solveTranspose(@colt_matrix, matrix.colt_matrix)
|
214
|
-
MDMatris.from_colt_matrix(resul)
|
215
|
-
end
|
216
|
-
|
217
|
-
#------------------------------------------------------------------------------------
|
218
|
-
# Constructs and returns the SingularValue-decomposition of the given matrix.
|
219
|
-
#------------------------------------------------------------------------------------
|
220
|
-
|
221
|
-
def svd
|
222
|
-
result = @algebra.svd(@colt_matrix)
|
223
|
-
[result.getInfo().val, result.cond(), result.norm2(), result.rank(),
|
224
|
-
result.getSingularValues().to_a(),
|
225
|
-
MDMatrix.from_colt_matrix(result.getS()),
|
226
|
-
MDMatrix.from_colt_matrix(result.getU()),
|
227
|
-
MDMatrix.from_colt_matrix(result.getV())]
|
228
|
-
end
|
229
|
-
|
230
|
-
#------------------------------------------------------------------------------------
|
231
|
-
# Returns the sum of the diagonal elements of matrix A; Sum(A[i,i]).
|
232
|
-
#------------------------------------------------------------------------------------
|
233
|
-
|
234
|
-
def trace
|
235
|
-
@algebra.trace(@colt_matrix)
|
236
|
-
end
|
237
|
-
|
238
|
-
#------------------------------------------------------------------------------------
|
239
|
-
# Modifies the matrix to be a lower trapezoidal matrix.
|
240
|
-
#------------------------------------------------------------------------------------
|
241
|
-
|
242
|
-
def trapezoidal_lower
|
243
|
-
result = @algebra.trapezoidalLower(@colt_matrix)
|
244
|
-
MDMatrix.from_colt_matrix(result)
|
245
|
-
end
|
246
|
-
|
247
|
-
#------------------------------------------------------------------------------------
|
248
|
-
# Returns the two-norm (aka euclidean norm) of vector X.vectorize();
|
249
|
-
#------------------------------------------------------------------------------------
|
250
|
-
|
251
|
-
def vector_norm2
|
252
|
-
@algebra.vectorNorm2(@colt_matrix)
|
253
|
-
end
|
254
|
-
|
255
|
-
end #
|
256
|
-
|
257
|
-
##########################################################################################
|
258
|
-
#
|
259
|
-
##########################################################################################
|
260
|
-
|
261
|
-
module Matrix2DDoubleAlgebra
|
262
|
-
include_package "cern.colt.matrix.tdouble.algo"
|
263
|
-
|
264
|
-
#------------------------------------------------------------------------------------
|
265
|
-
# Constructs and returns the QR-decomposition of the given matrix.
|
266
|
-
#------------------------------------------------------------------------------------
|
267
|
-
|
268
|
-
def qr(economy_size = true)
|
269
|
-
result = @algebra.qr(@colt_matrix)
|
270
|
-
[result.hasFullRank(), MDMatrix.from_colt_matrix(result.getQ(economy_size)),
|
271
|
-
MDMatrix.from_colt_matrix(result.getR(economy_size))]
|
272
|
-
end
|
273
|
-
|
274
|
-
end
|
275
|
-
|
276
|
-
##########################################################################################
|
277
|
-
#
|
278
|
-
##########################################################################################
|
279
|
-
|
280
|
-
module Matrix2DFloatAlgebra
|
281
|
-
include_package "cern.colt.matrix.tfloat.algo"
|
282
|
-
|
283
|
-
#------------------------------------------------------------------------------------
|
284
|
-
# Constructs and returns the QR-decomposition of the given matrix.
|
285
|
-
#------------------------------------------------------------------------------------
|
286
|
-
|
287
|
-
def qr
|
288
|
-
result = @algebra.qr(@colt_matrix)
|
289
|
-
[result.hasFullRank(),
|
290
|
-
MDMatrix.from_colt_matrix(result.getH()),
|
291
|
-
MDMatrix.from_colt_matrix(result.getQ()),
|
292
|
-
MDMatrix.from_colt_matrix(result.getR())]
|
293
|
-
end
|
294
|
-
|
295
|
-
end
|
296
|
-
|
297
|
-
##########################################################################################
|
298
|
-
#
|
299
|
-
##########################################################################################
|
300
|
-
|
301
|
-
class FloatingMDMatrix2D
|
302
|
-
|
303
|
-
include Matrix2DFloatingAlgebra
|
304
|
-
|
305
|
-
end # MDMatrix
|
306
|
-
|
307
|
-
##########################################################################################
|
308
|
-
#
|
309
|
-
##########################################################################################
|
310
|
-
|
311
|
-
class DoubleMDMatrix2D
|
312
|
-
|
313
|
-
include Matrix2DDoubleAlgebra
|
314
|
-
|
315
|
-
end
|
316
|
-
|
317
|
-
##########################################################################################
|
318
|
-
#
|
319
|
-
##########################################################################################
|
320
|
-
|
321
|
-
class FloatMDMatrix2D
|
322
|
-
|
323
|
-
include Matrix2DFloatAlgebra
|
324
|
-
|
325
|
-
end
|