我有这段代码,但它不断返回从 0 到大约 1050 的随机频率。请你帮我理解为什么会这样。
我的数据长度为 1024,采样率为 8192,数据是一个短数组,其中填充了来自麦克风的输入数据。
float *iSignal = new float[2048];
float *oSignal = new float[2048];
int pitch = 0;
for(x=0;x<=1024;x++) {
iSignal[x] = data[x];
}
fft(iSignal,oSignal,1024); //Input data, output data, length of input and output data
for(int y=0;y< 2048;y+=2) {
if((pow(oSignal[y],2)+pow(oSignal[y+1],2))>(pow(oSignal[pitch],2)+pow(oSignal[(pitch)+1],2))) {
pitch = y;
}
}
double pitchF = pitch / (8192.0/1024);
printf("Pitch: %f\n",pitchF);
谢谢,
尼尔。
编辑:更改了代码,但它仍然返回随机频率。