Class FloatVectorDataSparse

All Implemented Interfaces:
Serializable, Cloneable

public class FloatVectorDataSparse
extends FloatVectorData
Stores sparse data for a FloatVector and carries out basic operations.

Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.

Author:
Alexander Verbraeck, Peter Knoppers
See Also:
Serialized Form
  • Constructor Details

    • FloatVectorDataSparse

      public FloatVectorDataSparse​(float[] vectorSI, int[] indices, int size)
      Create a vector with sparse data.
      Parameters:
      vectorSI - float[]; the data to store
      indices - int[]; the index values of the Vector
      size - int; the length of the vector (padded with 0 after highest index in indices)
  • Method Details

    • cardinality

      public final int cardinality()
      Compute and return the number of non-zero cells in this indexed value.
      Specified by:
      cardinality in class AbstractStorage<FloatVectorData>
      Returns:
      int; the number of non-zero cells
    • assign

      public FloatVectorData assign​(FloatFunction floatFunction)
      Apply an operation to each cell.
      Specified by:
      assign in class FloatVectorData
      Parameters:
      floatFunction - FloatFunction; the operation to apply
      Returns:
      FloatVectorData; this (modified) float vector data object
    • assign

      public final FloatVectorDataSparse assign​(FloatFunction2 floatFunction, FloatVectorData right)
      Apply a binary operation on a cell by cell basis.
      Specified by:
      assign in class FloatVectorData
      Parameters:
      floatFunction - FloatFunction2; the binary operation to apply
      right - FloatVectorData; the right operand for the binary operation
      Returns:
      DoubleMatrixData; this (modified) float vector data object
    • toDense

      public final FloatVectorDataDense toDense()
      Return the densely stored equivalent of this data.
      Specified by:
      toDense in class FloatVectorData
      Returns:
      FloatVectorDataDense; the dense transformation of this data
    • toSparse

      public final FloatVectorDataSparse toSparse()
      Return the sparsely stored equivalent of this data.
      Specified by:
      toSparse in class FloatVectorData
      Returns:
      FloatVectorDataSparse; the sparse transformation of this data
    • size

      public final int size()
      Retrieve the size of the vector.
      Specified by:
      size in class FloatVectorData
      Returns:
      int; the size of the vector
    • getSI

      public final float getSI​(int index)
      Retrieve the SI value of one element of this data.
      Specified by:
      getSI in class FloatVectorData
      Parameters:
      index - int; the index to get the value for
      Returns:
      the value at the index
    • setSI

      public final void setSI​(int index, float valueSI)
      Sets a value at the index in the vector.
      Specified by:
      setSI in class FloatVectorData
      Parameters:
      index - int; the index to set the value for
      valueSI - float; the value at the index
    • getDenseVectorSI

      public final float[] getDenseVectorSI()
      Create and return a dense copy of the data.
      Specified by:
      getDenseVectorSI in class FloatVectorData
      Returns:
      float[]; a safe copy of VectorSI
    • copy

      public final FloatVectorDataSparse copy()
      Create and return a deep copy of the data.
      Specified by:
      copy in class AbstractStorage<FloatVectorData>
      Returns:
      T; a deep copy of the data
    • instantiate

      public static FloatVectorDataSparse instantiate​(float[] valuesSI)
      Instantiate a FloatVectorDataSparse from an array.
      Parameters:
      valuesSI - float[]; the (SI) values to store
      Returns:
      the FloatVectorDataSparse
    • plus

      public final FloatVectorData plus​(FloatVectorData right)
      Add two vectors on a cell-by-cell basis. If both vectors are sparse, a sparse vector is returned, otherwise a dense vector is returned.
      Specified by:
      plus in class FloatVectorData
      Parameters:
      right - FloatVectorData; the other data object to add
      Returns:
      FloatVectorData; the sum of this data object and the other data object
    • minus

      public final FloatVectorData minus​(FloatVectorData right)
      Subtract two vectors on a cell-by-cell basis. If both vectors are sparse, a sparse vector is returned, otherwise a dense vector is returned.
      Specified by:
      minus in class FloatVectorData
      Parameters:
      right - FloatVectorData; the other data object to subtract
      Returns:
      FloatVectorData; the difference of this data object and the other data object
    • times

      public final FloatVectorData times​(FloatVectorData right)
      Multiply two vector on a cell-by-cell basis. If both vectors are dense, a dense vector is returned, otherwise a sparse vector is returned.
      Specified by:
      times in class FloatVectorData
      Parameters:
      right - FloatVectorData; the other data object to multiply with
      Returns:
      FloatVectorData; a new double vector data store holding the result of the multiplications
    • divide

      public final FloatVectorData divide​(FloatVectorData right) throws ValueRuntimeException
      Divide two vectors on a cell-by-cell basis. If this vector is sparse and right is dense, a sparse vector is returned, otherwise a dense vector is returned.
      Specified by:
      divide in class FloatVectorData
      Parameters:
      right - FloatVectorData; the other data object to divide by
      Returns:
      FloatVectorData; the ratios of the values of this data object and the other data object
      Throws:
      ValueRuntimeException - if vectors have different lengths
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class FloatVectorData
    • equals

      public boolean equals​(Object obj)
      Overrides:
      equals in class FloatVectorData