c语言表示高斯白噪声
时间: 2024-11-12 10:10:58 浏览: 22
如何用c产生高斯白噪声.pdf
5星 · 资源好评率100%
在C语言中,高斯白噪声通常用于模拟随机信号,其特点是各个频率分量的功率均匀分布,且噪声幅度服从高斯分布。要生成高斯白噪声,一种常见的方法是使用伪随机数生成器(如线性同余法)配合正态分布函数。
以下是一个简单的示例,展示了如何使用C语言和标准库`<math.h>`生成二维高斯白噪声矩阵:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define GAUSSIAN_NOISE_SIZE 100 // 噪声矩阵大小
#define SIGMA 1.0 // 高斯分布的标准差
void generate_gaussian(double *matrix, int size) {
srand(time(0)); // 设置随机种子保证每次运行结果不同
for (int i = 0; i < size; ++i) {
for (int j = 0; j < size; ++j) {
matrix[i * size + j] = rand() / (double)(RAND_MAX) * 2 - 1; // 随机值在[-1, 1]
matrix[i * size + j] *= sqrt(-2 * log(1.0 / (size * size))); // 调整到正态分布
matrix[i * size + j] += cos(2 * M_PI * i * j / size); // 添加简单周期性
}
}
}
int main() {
double noise[GAUSSIAN_NOISE_SIZE * GAUSSIAN_NOISE_SIZE];
generate_gaussian(noise, GAUSSIAN_NOISE_SIZE);
printf("Generated Gaussian noise matrix:\n");
// 打印噪声矩阵
for (int i = 0; i < GAUSSIAN_NOISE_SIZE; ++i) {
for (int j = 0; j < GAUSSIAN_NOISE_SIZE; ++j) {
printf("%.2lf ", noise[i * GAUSSIAN_NOISE_SIZE + j]);
}
printf("\n");
}
return 0;
}
```
阅读全文