class Malge::MultiVariableFunction
Constants
- TOLERANCE
Attributes
data[R]
Public Class Methods
new(data)
click to toggle source
data example:
[ {x => 0.0, y => 0.1, z => 0.0}, {x => 1.0, y => 1.1, z => 1.0}, {x => 2.0, y => 2.1, z => 3.0}, ]
# File lib/malge/multivariablefunction.rb, line 19 def initialize(data) @data = data end
Public Instance Methods
abstract(conditions)
click to toggle source
# File lib/malge/multivariablefunction.rb, line 31 def abstract(conditions) result = Marshal.load(Marshal.dump(self)) result.abstract!(conditions) result end
abstract!(conditions)
click to toggle source
Return array of data which matches the hash.
# File lib/malge/multivariablefunction.rb, line 24 def abstract!(conditions) results = @data.select do |coords| match_condition?(coords, conditions) end @data = results end
data_pairs(key0, key1)
click to toggle source
return 2-dimensional array. [
[x0, y0], [x1, y1], :
]
# File lib/malge/multivariablefunction.rb, line 79 def data_pairs(key0, key1) results = [] @data.each do |datum| results << [datum[key0], datum[key1]] end results end
delete_axis(axis)
click to toggle source
# File lib/malge/multivariablefunction.rb, line 67 def delete_axis(axis) result = Marshal.load(Marshal.dump(self)) result.delete_axis!(axis) result end
delete_axis!(axis)
click to toggle source
# File lib/malge/multivariablefunction.rb, line 61 def delete_axis!(axis) @data.each do |datum| datum.delete axis end end
unite_axes(keys, new_key = nil)
click to toggle source
# File lib/malge/multivariablefunction.rb, line 55 def unite_axes(keys, new_key = nil) result = Marshal.load(Marshal.dump(self)) result.unite_axes!(keys, new_key) result end
unite_axes!(keys, new_key = nil)
click to toggle source
unite axes with the same value. keys : [:a, :b] new_key : default is keys
# File lib/malge/multivariablefunction.rb, line 40 def unite_axes!(keys, new_key = nil) new_key ||= keys[0] results = [] @data.each do |datum| new_datum = Marshal.load(Marshal.dump(datum)) if same?(new_datum, keys) val = new_datum[keys[0]] keys.each {|key| new_datum.delete(key) } new_datum[new_key] = val results << new_datum end end @data = results end
Private Instance Methods
match_condition?(datum, conditions)
click to toggle source
# File lib/malge/multivariablefunction.rb, line 99 def match_condition?(datum, conditions) conditions.each do |key, val| return false unless datum[key] == val end end
same?(datum, keys, tolerance = TOLERANCE)
click to toggle source
if when the same value among keys, return true. if not, return false.
# File lib/malge/multivariablefunction.rb, line 91 def same?(datum, keys, tolerance = TOLERANCE) ref = datum[keys[0]] keys.each do |key| return false unless ref.to_f.equal_in_delta?(datum[key].to_f, tolerance) end return true end