タグ

2012年3月29日のブックマーク (3件)

  • C++のTips - 正規分布の乱数を得るには?:tech.ckme.co.jp

    一様乱数からボックス=ミューラー法(Box-Muller transform)を使うことによって、2つの独立した正規乱数(g1、g2)を得ることができる。 生成方法は2つあり、通常の方法は三角関数を計算する必要があるので、rand関数が十分速い場合は次の極座標法が適当である。 double a1,a2,b; do { a1=2.0*rand()/RAND_MAX-1.0; a2=2.0*rand()/RAND_MAX-1.0; b=a1*a1+a2*a2; }while(b >= 1.0); b = sqrt( (-2.0 * log( b ) ) / b ); double g1 = a1 * b; double g2 = a2 * b; g1*=std+mean; g2*=std+mean; なお、rand()はあまり質の良い乱数ではないので、より高精度な乱数が必要な場合は、XORSH

  • 正規分布と正規乱数 - chmod 777 myknowledge

    ノイズを付加する場合に確率密度関数として正規分布を用いることがある。 これを実際にやってみたくなったので実現方法を調べてみた。自分への覚え書きとして以下に示す。 正規分布の説明は以下を参照。 http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83 正規分布を表す式は以下。 正規分布に従うノイズを発生させるためには、上式における x をノイズ量として x 軸上の各点におけるノイズを f(x) で表される確率で発生させればよい。 一方、多くのプログラミング言語で提供されているのは一様乱数(ある有限の区間を区切って、その区間内で全ての実数が同じ確率(濃度)で現れるような乱数 by Wikipedia)を発生させるメソッドである。C言語でいえば stdlib.h で提供される rand() が相当する。 0より大きく(0は

  • cv::Matの基本処理 — OpenCV-CookBook

    マルチチャンネルと多次元配列¶ OpenCV 2.2 以降,2次元配列用の cv::Mat クラスと,多次元配列用の cv::MatND クラスが統一されました.つまり,現在は, cv::Mat で任意次元の配列を表現します. しかし,今まで cv::Mat を引数に取っていた関数が,すべて「多次元(>=3次元)」の Mat に対応しているとは限らないので注意が必要です. OpenCVの構造には,次元とチャンネルの概念があります. チャンネル(channel):要素の次元 次元(dimension):複数の要素からなる配列の次元 マルチチャンネル多次元配列の例(Dim=2 Ch=2, Dim=2 Ch=1, Dim=2 Ch=3, Dim=3 Ch=4): 上記の例のように, や の配列は,1次元ベクトルではなく,1行の2次元行列と見なされることに注意してください.つまり,Mat の次元は

    kose
    kose 2012/03/29