GaussianNoiseGenerator
指定した共分散(1 サンプルごとの分散)を持つガウス分布(正規分布)のランダムノイズを、入力 1 サンプルごとに 1 サンプル生成します。
処理内容
- Covariance のサンプルが届くたびに、ノイズを 1 サンプル出力します(Covariance がトリガ入力です)。したがって、出力のレートは Covariance の入力のレートになります。
- 出力 = sqrt(|Covariance|) * n です。n は標準正規分布の乱数です(MT19937 の一様乱数と polar 法で生成します)。各サンプルの分散は、サンプリングレートによらず |Covariance| です。
データ形式
- 入力: スカラー(ベクトルサイズ 1。それ以外のときはエラーで停止します)。出力: Covariance 入力のタイムスタンプを持つ Float64 スカラー。
注意事項
- 目的の出力レートで、周期的な信号源(number generator など)から Covariance を与えてください。
- カルマンフィルタの観測ノイズを模擬するときは、Covariance にフィルタの観測ノイズ共分散 R と同じ値を与えてください。
- 乱数の系列は起動のたびに同じシードから始まるので、毎回同じノイズになります。Windows と Linux でも同じです。
参考文献
- [1] M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-Dimensionally Equidistributed Uniform Pseudo-Random Number Generator," ACM Transactions on Modeling and Computer Simulation, vol. 8, no. 1, pp. 3-30, 1998. Used through std::mt19937 of the C++ standard library. https://doi.org/10.1145/272991.272995 — 使っている機能:一様乱数(MT19937)。
- [2] G. Marsaglia and T. A. Bray, "A Convenient Method for Generating Normal Variables," SIAM Review, vol. 6, no. 3, pp. 260-264, 1964. https://doi.org/10.1137/1006063 — 使っている機能:正規乱数(polar 法)。
出力
| 名前 | 説明 |
|---|---|
GaussianNoise | ガウスノイズのサンプル(平均 0、分散 |Covariance|)。 型: Float64 |
入力
| 名前 | 説明 |
|---|---|
Covariance | 出力ノイズの共分散(1 サンプルごとの分散)。1 サンプルごとに出力が 1 サンプル生成されます。 型: Float64 |
RTMaps ツールキット ドキュメント