设计一个随机信号发生器产生类似高斯白噪信号c语言代码
时间: 2024-02-08 13:02:36 浏览: 31
设计一个随机信号发生器产生类似高斯白噪信号的C语言代码。
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 1000 // 生成的信号点数
#define mean 0 // 均值
#define variance 1 // 方差
double generateGaussianWhiteNoise()
{
static int hasSpare = 0;
static double spare;
if (hasSpare)
{
hasSpare = 0;
return spare;
}
hasSpare = 1;
double u, v, s;
do
{
u = (double)rand() / RAND_MAX * 2.0 - 1.0;
v = (double)rand() / RAND_MAX * 2.0 - 1.0;
s = u * u + v * v;
} while (s >= 1.0 || s == 0.0);
s = sqrt(-2.0 * log(s) / s);
spare = v * s;
return u * s;
}
int main()
{
srand(time(NULL)); // 初始化随机数种子
double signal[N];
for (int i = 0; i < N; i++)
{
signal[i] = mean + sqrt(variance) * generateGaussianWhiteNoise();
printf("%f\n", signal[i]); // 打印生成的信号值
}
return 0;
}
```
以上代码中,使用 `generateGaussianWhiteNoise()` 函数产生高斯白噪信号,生成N个信号点。通过调整 `mean` 和 `variance` 可以控制高斯白噪信号的均值和方差值。代码中使用 `sqrt()` 函数计算方差的平方根,`rand()` 函数生成随机数,`srand()` 函数根据当前时间初始化随机数种子。最后通过循环打印生成的信号值。