Sha256: 9443126da69b0e894ce6638ae0de61d1bd25f9e10d9be830fe79ed1af27baf4a

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

module TimeSeriesMath
  #
  # == ElemwiseOperators
  # A collection of helper functions for by-element operations:
  # * addition
  # * substraction
  # * multiplication by scalar
  #
  module ElemwiseOperators
    #
    # Element-wise addition of objects
    #
    def elemwise_add(obj1, obj2)
      case obj1
      when Array
        obj1.clone.zip(obj2).map { |d| d[0] + d[1] }
      when Hash
        out = {}
        obj1.each { |k, v| out[k] = v + obj2[k] }
        out
      else
        obj1 + obj2
      end
    end

    # Element-wise substraction of objects
    #
    def elemwise_sub(obj1, obj2)
      case obj1
      when Array
        obj1.clone.zip(obj2).map { |d| d[0] - d[1] }
      when Hash
        out = {}
        obj1.each { |k, v| out[k] = v - obj2[k] }
        out
      else
        obj1 - obj2
      end
    end

    # Element-wise multiplication by scalar
    #
    def elemwise_mul_scalar(scalar, obj)
      case obj
      when Array
        obj.clone.map { |d| d * scalar }
      when Hash
        out = {}
        obj.each { |k, v| out[k] = v * scalar }
        out
      else
        obj * scalar
      end
    end
  end # module ElemwiseOperators
end # module TimeSeriesMath

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
time_series_math-0.1.1 lib/time_series_math/elemwise_operators.rb