高斯白噪声c语言实现
时间: 2023-07-13 12:10:34 浏览: 957
高斯白噪声的C语言实现.txt
4星 · 用户满意度95%
以下是一个简单的高斯白噪声C语言实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
double randn(double mu, double sigma) {
double U1, U2, W, mult;
static double X1, X2;
static int call = 0;
if (call == 1) {
call = !call;
return (mu + sigma * (double) X2);
}
do {
U1 = -1 + ((double) rand() / RAND_MAX) * 2;
U2 = -1 + ((double) rand() / RAND_MAX) * 2;
W = pow(U1, 2) + pow(U2, 2);
} while (W >= 1 || W == 0);
mult = sqrt((-2 * log(W)) / W);
X1 = U1 * mult;
X2 = U2 * mult;
call = !call;
return (mu + sigma * (double) X1);
}
int main() {
int i;
double mu = 0.0;
double sigma = 1.0;
double noise;
srand((unsigned int) time(NULL));
for (i = 0; i < 10; i++) {
noise = randn(mu, sigma);
printf("%lf\n", noise);
}
return 0;
}
```
这段代码使用了Box-Muller方法来生成高斯白噪声。其中`mu`是高斯分布的均值,`sigma`是高斯分布的标准差。在`main`函数中,我们使用`srand`函数来初始化随机数生成器,并生成了10个高斯白噪声样本。
阅读全文