まあ、問題かどうかも不明だけど一応解決。
ピタゴラスの定理を使ったAM検波で、出力波形が正側に偏る問題。 以下のコードで解決できた。
1 2 3 4 5 6 |
for (int i = 0; i < datapoint; i++) { data2[i] = Math.Sqrt(data1[i].Real * data1[i].Real + data1[i].Imaginary * data1[i].Imaginary); average = average * (1 - 0.01) + data2[i] * 0.01; data3[i] = data2[i] - average; } |
data1は、検波前の複素信号。 data2は、検波後の信号。 100個のデータを積分して、DC成分を抽出。 averageとDC成分が一致したらそれ以上averageが増えないようにしている。
スタート時点では、徐々にDC成分が減っていき..
時間が経つとDC成分が無くなる。
これで、音質が改善されたとかいう話じゃないからどうでもいいけど、まあ、簡単に解決できたからAM検波は、これを採用する。