C# の陰アルゴリズムで基本周波数をカウントする必要があります。
1 秒の長さ 250Hz の正弦波の振幅を含む配列 (data[44100]) があります。これが私のコードです:
int t = 0; //starting point of the window
int w = data.Length / 25; //the end of the window so the size of the window is 40msec
int rmax = 0; //the maximum of the correlation function
int period = 0; //the period of the sinus
for (int tau = 0; tau < w; tau++)
{
int r = 0;
for (int j = t + 1; j < (t + w); j++)
{
r = r + (data[j] * data[j + tau]);
}
if (r > rmax)
{
rmax = r;
period = tau;
}
}
float time = (float)period/44100;
float freq = 1.0f / time;
System.Console.WriteLine(freq);
周波数として 250 を取得する必要がありますが、問題が発生しています。配列の値は良好です。Excel で確認したところ、期間は正常でした。誰か助けてくれませんか?