vector_comparer 0.0.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a4077e9dbd9b46b7273a813331d1405bfe8908ed
4
+ data.tar.gz: d54a5ac0c66ec0e695a864da1adb816783291586
5
+ SHA512:
6
+ metadata.gz: 7b36ffd696069d54698dce62fe46b0e4cf7491ed53c9d61eaf76c00f16780555f70b6fa64d2f5dc29cdd23cfb035614b7eae6f2282c3f254cde9fcceb194f9bc
7
+ data.tar.gz: 9aa9a351d2074fb4b56b082a88e1d2ffbb41000713791362d4540786ef75eac84a9730b0736c378ac7214e56a6786bb1c04c1fdd416c4c654e9e0457e49fd9a2
@@ -0,0 +1,5 @@
1
+
2
+ #!/usr/bin/env ruby
3
+
4
+ require 'vector_comparer'
5
+ VectorComparer.compare_vectors
@@ -0,0 +1,62 @@
1
+ class VectorComparer
2
+
3
+ @dimensions = 128
4
+ @number_of_random_vectors = 10
5
+
6
+ def self.random1
7
+ number = rand(2)
8
+ if number == 0
9
+ return -1
10
+ else
11
+ return 1
12
+ end
13
+ end
14
+
15
+ def self.dot_prod(v1,v2)
16
+ product = 0
17
+ v1.length.times do |i|
18
+ product += v1[i] * v2[i]
19
+ end
20
+ return product
21
+ end
22
+
23
+ def self.compare_vectors
24
+ puts "How many test vectors should there be?"
25
+ @number_of_test_vectors = gets.chomp.to_i
26
+ puts "What should the threshold be?"
27
+ @threshold = gets.chomp.to_i
28
+
29
+ #Generate 10, 128-d random vectors
30
+ random_vectors = Array.new(@number_of_random_vectors)
31
+ @number_of_random_vectors.times do |i|
32
+ random_vector = Array.new(@dimensions)
33
+ @dimensions.times do |n|
34
+ random_vector[n] = random1
35
+ end
36
+ random_vectors[i] = random_vector
37
+ end
38
+
39
+ #Generate x, 128-d test vectors
40
+ test_vectors = Array.new(@number_of_test_vectors)
41
+ @number_of_test_vectors.times do |i|
42
+ test_vector = Array.new(@dimensions)
43
+ @dimensions.times do |n|
44
+ test_vector[n] = random1
45
+ end
46
+ test_vectors[i] = test_vector
47
+ end
48
+
49
+ puts "For threshold #{@threshold}..."
50
+ test_vectors.each do |test_vector|
51
+ number_near_orthogonal = 0
52
+ random_vectors.each do |random_vector|
53
+ dp = dot_prod(test_vector,random_vector)
54
+ if dp.abs < @threshold
55
+ number_near_orthogonal += 1
56
+ end
57
+ end
58
+ puts "The random test vector was nearly orthogonal to #{number_near_orthogonal} or the initial vectors"
59
+ end
60
+ end
61
+
62
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vector_comparer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Nathaniel Morihara
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-05 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Create random vectors and see if they are close to orthogonal or not
14
+ email: nhm37@cornell.edu
15
+ executables:
16
+ - vector_comparer
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/vector_comparer
21
+ - lib/vector_comparer.rb
22
+ homepage: http://rubygems.org/gems/vector_comparer
23
+ licenses:
24
+ - Cornell
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.4.5
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Compar Vectors
46
+ test_files: []