用噪声在C中生成正弦波阵列
Generating sine wave array in C with noise
这里是菜鸟。有人能给我一个例子,说明如何在 C 语言中生成方差为 0.01 的白噪声的 2kHz 正弦波阵列吗?这是我目前所拥有的:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define PI 3.141592653589793
int main() {
int i;
double buffer[10000];
for(i = 0; i < 10000; i++)
{
buffer[i] = sin(2000 * (2 * PI) * i / 6000) + sqrt(0.01)rand;
}
return 0;
}
(供参考)
您首先必须使用 srand()
为随机数生成器播种,您应该在每个程序中向其传递一个唯一值 -运行.
您的代码,已修改为正确性:
#include <math.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned)time(NULL));
int i;
double buffer[10000];
for(i = 0; i < 10000; i++)
{
buffer[i] = sin(2000 * (2 * M_PI) * i / 6000) + sqrt(0.01) * rand();
}
/* ... */
return 0;
}
这里是菜鸟。有人能给我一个例子,说明如何在 C 语言中生成方差为 0.01 的白噪声的 2kHz 正弦波阵列吗?这是我目前所拥有的:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define PI 3.141592653589793
int main() {
int i;
double buffer[10000];
for(i = 0; i < 10000; i++)
{
buffer[i] = sin(2000 * (2 * PI) * i / 6000) + sqrt(0.01)rand;
}
return 0;
}
(供参考)
您首先必须使用 srand()
为随机数生成器播种,您应该在每个程序中向其传递一个唯一值 -运行.
您的代码,已修改为正确性:
#include <math.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned)time(NULL));
int i;
double buffer[10000];
for(i = 0; i < 10000; i++)
{
buffer[i] = sin(2000 * (2 * M_PI) * i / 6000) + sqrt(0.01) * rand();
}
/* ... */
return 0;
}