Module: CsrMatrix::Helpers

Included in:
TwoDMatrix
Defined in:
lib/csrmatrix/helpers.rb

Instance Method Summary collapse

Instance Method Details

#count_nonzero(array) ⇒ Object

max_row



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/csrmatrix/helpers.rb', line 42

def count_nonzero(array) 
	# Finds all nonzero values in an array.
	# pre 	array 
	# post 	int nonzero count of array
	max_count = 0
	array.each_index do |i|
		subarray = array[i]
	  subarray.each_index do |x|
	  	if array[i][x] != 0
	  		max_count += 1
	  	end
	  end
	end
	return max_count
end

#count_total(array) ⇒ Object

depth



74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/csrmatrix/helpers.rb', line 74

def count_total(array) 
	# Counts all elements in array - assumed 2d
	# pre 	array
	# post 	int count of all elements
  max_count = 0
  array.each_index do |i|
    subarray = array[i]
    subarray.each_index do |x|
      max_count += 1
    end
  end
  return max_count
end

#depth(array) ⇒ Object

count_nonzero



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/csrmatrix/helpers.rb', line 58

def depth(array)
	# Code from http://stackoverflow.com/questions/9545613/getting-dimension-of-multidimensional-array-in-ruby
	# Identifies the depth of an array.
	# pre 	array
	# post 	int depth of array
   return 0 if array.class != Array
	result = 1
	array.each do |sub_a|
	  if sub_a.class == Array
	    dim = depth(sub_a)
	    result = dim + 1 if dim + 1 > result
	  end
	end
	return result
end

#max_col(array) ⇒ Object

ARRAY FUNCTIONS for pre-processing of matrix



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/csrmatrix/helpers.rb', line 9

def max_col(array)
	# Identifies the 'column' value of an array (eg. the number of entries in a column)
	# pre 	array
	# post 	column count of array
	values = array
	max_count = 0
	# Loop over indexes.
	values.each_index do |i|
		counter = 0
	  # Get subarray and loop over its indexes also.
	  subarray = values[i]
	  subarray.each_index do |x|
	  	counter += 1
	  end
	  if counter > max_count
	  	max_count = counter
	  end
	end
	return max_count
end

#max_row(array) ⇒ Object

max_col



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/csrmatrix/helpers.rb', line 30

def max_row(array)
	# Identifies the 'row' value of an array (eg. the number of entries in a row)
	# pre 	array
	# post 	row count of array
	values = array
	max_count = 0
	values.each_index do |i|
	  max_count += 1
	end
	return max_count
end