次の方法を使用して正弦波を生成しています-
sampling rate = 22050;
theta = 0;
for (i = 0; i < N; i++)
{
theta = phase * 2 * PI;
signal[i] = amplitude * sin(theta);
phase = phase + frequency/sampling rate;
}
周波数が 8000 Hz の信号を生成すると、出力に歪みが生じます。これより低い周波数 (たとえば 6000 Hz) は正しく生成されます。このように位相にチェックを入れると、8000 Hz の信号が正しく生成されます。
if (phase > 1)
{
float temp = phase - 1;
phase = temp;
}
Xcodeの正弦関数と関係があると思いますが、おそらく許容できる値の範囲ですか? 位相ラッピングの有無にかかわらず同じコードは、Matlab では違いがありません。誰かがここで何が起こっているのか説明できますか?