「実用的なアプリケーションはありますか?」間違いなくそうです。少なくともコードをチェックし、エラーをバインドします。
「理論的には、理論と実践は一致しますが、実際には一致しません。」だから、数学的には、いや、マットが答えました。(すでに答えたように) F(F(x (t ))) =x(−t)(潜在的な倍率まで)。ただし、上記の方程式は通常、離散フーリエ変換とその高速アバターであるFFTを介して実装されるため、計算上は便利です。
最初の理由は、フーリエの実装が、自分でコーディングされたか、他の誰かによってコーディングされたか、ライブラリからコーディングされたかに関係なく、データに対して実行する必要があることを確認するという意志から生じます。サンプルの順序、スケーリング係数、入力タイプ(実数、ビット深度)または長さの制限は、FFTのようなフーリエ実装の潜在的なその後のエラーの原因となります。したがって、健全性チェックとして、実装されたバージョンが少なくともおおよそ、理論的なプロパティを継承していることを常にチェックすることは良いことです。見てわかるように、マチュピチュが示すように、実際の入力を正確に逆に回復することはできません。多くの場合、虚数部は正確にゼロではなく、実数部は予期されたものですが、コンピューターの計算が不完全であるため、小さな相対誤差の範囲内です(浮動小数点)マシン依存の許容範囲内。これは次の図で確認できます。FFTは、ランダムな32サンプル信号に2回適用され、反転されます。ご覧のとおり、誤差はわずかで、倍精度浮動小数点を使用しています。
エラーが比較的小さくない場合は、使用するコードに誤りがある可能性があります。
バツ01 e 6バツk + 1= R e(f(f(f(f(xk))))))
f最大| バツk− x0|
ご覧のとおり、信号のサイズにより、エラーの大きさの順序が変更されています。さらに、最大誤差は着実に増加します。回の繰り返しの後、それは十分に小さいままです。しかし、 -voxelキューブと数百万回の反復により、このエラーは無視できなくなる可能性があると推測できます。10001000 × 1000 × 1000
エラーの境界を定め、その動作を反復にわたって評価することで、そのような動作を検出し、適切なしきい値処理または丸めによって削減することができます。
追加情報: