クラス QuantizedVector

Quantized vector of either 1, 2, 4, 8, 16 bit-width [詳細]

#include <quantized_vector.h>

すべてのメンバ一覧

Public 型

typedef size_t size_type
typedef float value_type
typedef uint16_t storage_type

Public メソッド

 QuantizedVector ()
 デフォルトコンストラクタ。空データを作る
 QuantizedVector (size_t n_values, value_type range_min, value_type range_max)
 コンストラクタ
virtual ~QuantizedVector ()
 仮想デストラクタ。何もしない
value_type rangeMin () const
 取りうる最小値を返す
value_type rangeMax () const
 取りうる最大値を返す
bool setRange (value_type range_min, value_type range_max)
 値の取りうる幅を設定する.
bool setNumberOfValues (size_t n_values)
 何通りの値を取りうるかを設定する。
size_t numberOfValues () const
 何通りの値を取りうるかを返す
size_t size () const
 データの個数を返す。
void resize (size_type new_size, value_type x=value_type())
 データの個数を変更
template<typename InputIterator>
void assign (InputIterator first, InputIterator last)
 値をセットする
template<typename OutputIterator>
OutputIterator copy_to (OutputIterator out) const
 内部の値を他のシーケンスにコピーする
template<typename OutputIterator>
OutputIterator copy_to (OutputIterator out, OutputIterator oend) const
 内部の値を他のシーケンスにコピーする
storage_type operator[] (size_type index) const
 内部表現を返す添字オペレータ(const)
storage_typeoperator[] (size_type index)
 内部表現を返す添字オペレータ(non const)
int writeToXml (std::ostream &os, const std::string &tag) const
 Xmlへの書込みを行う
int readFromXml (std::istream &is, const std::string &tag)
 Xmlからの読み込みを行う

Protected 型

typedef std::vector< storage_typevector_type

Protected メソッド

storage_type quantize (value_type v) const
 値を量子化.
value_type dequantize (storage_type s) const
 量子化された値の復元
value_type step () const
 刻み幅を計算する。
void pack_to (std::vector< uint8_t > &packed) const
 bit数縮小処理を行う.
void unpack_from (const std::vector< uint8_t > &packed, int n_bits, size_t n_elems)
 bit数縮小された値からの復元処理

Static Protected メソッド

static int bits_necessary_for (size_t n_values)
 取りうる値の数から必要なbit数を計算する

Private メソッド

 BOOST_SERIALIZATION_SPLIT_MEMBER ()
 シリアライズ処理をsave/loadに分けるためのboostマクロ
template<class Archive>
void save (Archive &ar, const unsigned int version) const
 シリアライズの際にboostから呼ばれるメンバテンプレート.
template<class Archive>
void load (Archive &ar, const unsigned int version)
 デシリアライズの際にboostから呼ばれるメンバテンプレート.

Private 変数

std::vector< storage_typedata_
 内部表現された値。16bit
size_t n_values_
 表現可能な値の数(何通りか?)
value_type range_min_
 表現可能な最小値
value_type range_max_
 表現可能な最大値

フレンド

class boost::serialization::access


説明

Quantized vector of either 1, 2, 4, 8, 16 bit-width

float/double値を送信する際の通信データ量を削減するため, 値を量子化して送るためのvectorクラス。

データビット数としては1,2,4,8,16が可能。ただし,使用する際は最小値, 最大値,「取りうる値の数」を設定して用いる。必要なbit数は自動計算さ れ,現在の実装では1, 2, 4, 8, 16のいずれかになる。

TODO:
必要最低限のbit数をサポート( 3bit, 5bitなど)
警告:
値が設定された後で,「取りうる値の数」を変更する操作には未 対応である。
切り捨ての方法(精度低下時),値の補完(精度向上時)の処理の方針が決 められないため,このようにした。以下の順序の使用のみサポートする。

  1. 取りうる値の数,rangeを設定
  2. 値(データ)を設定

型定義

typedef std::vector<storage_type> QuantizedVector::vector_type [protected]


コンストラクタとデストラクタ

QuantizedVector::QuantizedVector (  ) 

デフォルトコンストラクタ。空データを作る

QuantizedVector::QuantizedVector ( size_t  n_values,
value_type  range_min,
value_type  range_max 
)

コンストラクタ

引数:
[in] n_values 取りうる値の数
[in] range_min 最小値
[in] range_max 最大値

virtual QuantizedVector::~QuantizedVector (  )  [inline, virtual]

仮想デストラクタ。何もしない


関数

value_type QuantizedVector::rangeMin (  )  const [inline]

取りうる最小値を返す

value_type QuantizedVector::rangeMax (  )  const [inline]

取りうる最大値を返す

bool QuantizedVector::setRange ( value_type  range_min,
value_type  range_max 
)

値の取りうる幅を設定する.

引数:
[in] range_min 最小値
[in] range_max 最大値
戻り値:
成功/失敗。現在は range_min = range_maxの場合はエラーとする

bool QuantizedVector::setNumberOfValues ( size_t  n_values  ) 

何通りの値を取りうるかを設定する。

引数:
[in] n_values 取りうる値の数
戻り値:
設定可能範囲の場合trueが返る。

size_t QuantizedVector::numberOfValues (  )  const [inline]

何通りの値を取りうるかを返す

戻り値:
n_values 取りうる値の数

size_t QuantizedVector::size (  )  const [inline]

データの個数を返す。

void QuantizedVector::resize ( size_type  new_size,
value_type  x = value_type() 
)

データの個数を変更

引数:
[in] new_size 新しいサイズ
[in] x 個数が増えた場合に,生成された要素にセットされる値

template<typename InputIterator>
void QuantizedVector::assign ( InputIterator  first,
InputIterator  last 
) [inline]

値をセットする

[first, last)の範囲を自分に読み込む。読み込む際に量子化を行う

Template Parameters:
InputIterator 入力反復子クラス
引数:
[in] first 入力範囲の最初
[in] last 入力範囲の最後の一つ後。逆参照されない。

template<typename OutputIterator>
OutputIterator QuantizedVector::copy_to ( OutputIterator  out  )  const [inline]

内部の値を他のシーケンスにコピーする

Template Parameters:
OutputIterator 出力反復子クラス
引数:
[out] out 出力先を表す反復子。ここから値を書き始める。
戻り値:
out + (data_.end() - data.begin())に等しい出力反復子

template<typename OutputIterator>
OutputIterator QuantizedVector::copy_to ( OutputIterator  out,
OutputIterator  oend 
) const [inline]

内部の値を他のシーケンスにコピーする

Template Parameters:
OutputIterator 出力反復子クラス
引数:
[out] out 出力先を表す反復子。ここから値を書き始める。
[out] oend 出力先の最後の一つ後を表す反復子。ここには書かない。
戻り値:
out + min(oend-out, data_.end()-data_.begin())に等しい反復子

storage_type QuantizedVector::operator[] ( size_type  index  )  const [inline]

内部表現を返す添字オペレータ(const)

storage_type& QuantizedVector::operator[] ( size_type  index  )  [inline]

内部表現を返す添字オペレータ(non const)

int QuantizedVector::writeToXml ( std::ostream &  os,
const std::string &  tag 
) const

Xmlへの書込みを行う

引数:
os 書込み先ストリーム
[in] tag XMLタグ文字列
戻り値:
0 成功
negative 失敗

int QuantizedVector::readFromXml ( std::istream &  is,
const std::string &  tag 
)

Xmlからの読み込みを行う

引数:
is 読み込み元ストリーム
[in] tag XMLタグ文字列
戻り値:
0 成功
negative 失敗

storage_type QuantizedVector::quantize ( value_type  v  )  const [protected]

値を量子化.

引数:
[in] v 量子化前の値
戻り値:
量子化された値

value_type QuantizedVector::dequantize ( storage_type  s  )  const [protected]

量子化された値の復元

引数:
[in] s 量子化された値
戻り値:
復元された値

value_type QuantizedVector::step (  )  const [inline, protected]

刻み幅を計算する。

例。

  range_min_ = 1.0, range_max_ = 2.0, n_values_ = 3;

        +----------+----------+
       1.0        1.5        2.0  元の値(value_type)
        0          1          2   エンコードされた値

    --> 3通りなので,2bit必要

        step = (2.0 - 1.0) / (3 - 1) = 0.5
 

static int QuantizedVector::bits_necessary_for ( size_t  n_values  )  [static, protected]

取りうる値の数から必要なbit数を計算する

void QuantizedVector::pack_to ( std::vector< uint8_t > &  packed  )  const [protected]

bit数縮小処理を行う.

引数:
[out] packed 縮小された値の書込み先

void QuantizedVector::unpack_from ( const std::vector< uint8_t > &  packed,
int  n_bits,
size_t  n_elems 
) [protected]

bit数縮小された値からの復元処理

引数:
[in] packed 縮小された値をここから読む
[in] n_bits bit数
[in] n_elems 格納された要素数

QuantizedVector::BOOST_SERIALIZATION_SPLIT_MEMBER (  )  [private]

シリアライズ処理をsave/loadに分けるためのboostマクロ

template<class Archive>
void QuantizedVector::save ( Archive &  ar,
const unsigned int  version 
) const [inline, private]

シリアライズの際にboostから呼ばれるメンバテンプレート.

Template Parameters:
Archive Boostのアーカイブクラス名
引数:
[out] ar Archive Boostのアーカイブクラスのインスタンス
[in] (未使用) バージョン

template<class Archive>
void QuantizedVector::load ( Archive &  ar,
const unsigned int  version 
) [inline, private]

デシリアライズの際にboostから呼ばれるメンバテンプレート.

Template Parameters:
Archive Boostのアーカイブクラス名
引数:
[out] ar Archive Boostのアーカイブクラスのインスタンス
[in] (未使用) バージョン


フレンドと関連する関数

friend class boost::serialization::access [friend]


変数

std::vector<storage_type> QuantizedVector::data_ [private]

内部表現された値。16bit

size_t QuantizedVector::n_values_ [private]

表現可能な値の数(何通りか?)

表現可能な最小値

表現可能な最大値


このクラスの説明は次のファイルから生成されました:

マップビューワコンポーネントに対してThu Jun 17 20:24:08 2010に生成されました。  doxygen 1.5.5