普通は周波数スペクトルのグラフはLogスケールなのでそれでみてみる
ソースコードの変更箇所は、前回のコードから以下の一箇所だけ変更で、10を底にする普通のLogスケールに変換しています
// absolute value calc
let y: Vec<f32> = buffer.iter().map(|z| z.norm().log(10.0)*20.0).collect();
<結果のグラフ>
信号レベルからかなり低いのですが、そこそこのレベルで『ゼロ』レベルが推移していますが、これはf32であることによる丸め誤差で、f64にすると景色が変わります、実用上は検出した信号に対して100db以上のダイナミックマージンあればこれ以上の精度は不要だろうし、計算速度の点からもデメリットがあると思う
admin