ラプラス変換とフーリエ変換 その3 ~ FFT解析のNと精度 ~

ラプラス変換とフーリエ変換については、以前、以下に述べました。

ラプラス変換とフーリエ変換
ラプラス変換とフーリエ変換 その2

「ラプラス変換とフーリエ変換 その2」では、信号源を折れ線としました。
その結果、曲がり角の高い周波数成分を、FFTでは忠実に再現できないため、この回で予告したように、滑らかな波形での比較が必要です。

滑らかな信号源として、矩形波形をベッセルフィルターを通した波形を用います。
ベッセルフィルターについては、以下を参照ください。

ベッセルフィルターと他のフィルターの違い その1
ベッセルフィルターと他のフィルターの違い その2

以前にも述べたように、ラプラス変換は過渡現象で、フーリエ変換は周期関数なので、厳密に比較するには、以下の二つの方法をとる必要があります。

(1)フーリエ変換を孤立波に近似する
(2)ラプラス変換を疑似周期化する

(1)は、信号のデューティー比を小さく選びます。同じパルス幅の解析でも、デューティー比が半分(周期が2倍)になると、フーリエ変換の有効なNが半分になる、逆にいうと、同じ解析精度を得るためには、2倍のNが必要になります。

(2)に関しては、図1で説明します。

図1. Laplace 2周期目×2,000, 3周期目×10の9乗
図1. Laplace 2周期目×2,000, 3周期目×10の9乗

ここでは、比較するフーリエ変換の周期 T を10nsとします。
図1の青線はラプラス変換した、パルス幅3nsの単発の反射波形です。
図では、数nsで波形の振動(反射)は落ち着いているように見えますが、例えば、10ns付近を 2,000 倍に拡大(橙色の線)すると、反射の残骸を確認できます。
さらに、20ns付近を10の9乗に拡大(灰色の線)すると、まだ反射は完全には落ち着いていません。
したがって、ラプラス変換を疑似周期化するには、図1の10ns以降と、20ns以降の反射の残骸を元のパルス波形に加算する必要があります。

なお、(1)および(2)は、ラプラス変換とフーリエ変換を厳密に比較するために用いる手法で、実用的には、全く必要ありません。

図2(a)に、単発波形とフーリエ逆変換したものの差を示します。
ブルーの線が差(左軸目盛)で最大で200ppm程度の誤差があります。灰色の線(右軸目盛)は、信号です。

図2(a). LaplaceとiFFTの差(単発)
図2(a). LaplaceとiFFTの差(単発)

その原因は、図1の10ns付近のオレンジの波形や20ns付近の灰色の波形の重なりに起因します。

図2(b)は、ラプラス変換に、オレンジの波形を重畳して、フーリエ変換と比較したものです。
誤差の最大値もピークで0.0006ppmと、ほぼゼロになりました。

図2(b). LaplaceとiFFTの差(周期2まで考慮)
図2(b). LaplaceとiFFTの差(周期2まで考慮)

さらに、図1のグレーの波形まで重畳すると、図2(c)のように、針状の誤差のみとなりました。

図2(c). LaplaceとiFFTの差(周期3まで考慮)
図2(c). LaplaceとiFFTの差(周期3まで考慮)

図3に、「ラプラス変換とフーリエ変換2」の図4に、信号波形を重ねて書き直しました。

図3. 折れ線波形のLaplaceとiFFTの差(周期2まで考慮)
図3. 折れ線波形のLaplaceとiFFTの差(周期2まで考慮)

折れ線の信号の場合には、変化時に誤差が大きくなり、最大で150ppm程度の誤差となります。
図2(c)と図3とを比べると、5桁以上の違いがあります。

以上の図は、いずれもiFFTのNは、16,384です。

次に、iFFTのNと解析誤差について検証します。

まず、折れ線の信号の場合の誤差です。

図4は、iFFTのN=256とN=512の場合の誤差です。3,000ppmから4,000ppm、すなわち、0.3%から0.4%程度の誤差です。

図4. 折れ線信号の場合の誤差 N=256と512
図4. 折れ線信号の場合の誤差 N=256と512

図5は、N=8,192とN=16,384の場合の誤差です。平坦部は小さい誤差ですが、前に述べたように、波形の曲がり角で誤差が生じています。

図5. 折れ線信号の場合の誤差 N=8,192と16,384
図5. 折れ線信号の場合の誤差 N=8,192と16,384

誤差を検証するために、各時間のタイミングの誤差の標準誤差=二乗平均平方根(RMS : Root Mean Square)を計算します。

図6は、折れ線信号の場合のiFFTのNに対する誤差です。横軸は、FFTの2のべき指数で、例えば、横軸が10の場合は、Nは2の10乗、すなわち、1,024です。
N=16,384(2の14乗)で、標準誤差が2ppm程度です。

図6. 折れ線信号の場合のiFFTのNに対する誤差
図6. 折れ線信号の場合のiFFTのNに対する誤差

次に、今回の、ベッセルLPFを用いた滑らかな信号の場合について検証します。

図7は、N=256と512の場合のベッセルLPFの場合の誤差です。折れ線の図4と比べてください。
N=256の場合に、ピークで60ppm程度の誤差で、N=512の場合は、ピークでも10ppm以下です。

図7. ベッセルLPF信号の場合の誤差 N=256と512
図7. ベッセルLPF信号の場合の誤差 N=256と512

図8は、N=8,192と16,384の場合のベッセルLPFの場合の誤差です。折れ線の図5と比べてください。
いずれの場合も、極めて小さな誤差です。

図8. ベッセルLPF信号の場合の誤差 N=8,192と16,384
図8. ベッセルLPF信号の場合の誤差 N=8,192と16,384

図9は、折れ線の図6に対応した、ベッセルLPFの場合の標準誤差です。
N=256(2の8乗)で10ppm程度です。
2のべき指数の増加に対応して、1桁以上誤差が小さくなります。

図9.ベッセルLPF信号の場合のiFFTのNに対する誤差
図9.ベッセルLPF信号の場合のiFFTのNに対する誤差

実用的には、N=256でも十分な精度(誤差)と考えます。

図10は、折れ線の場合のiFFT(N=256)とLaplaceの波形の比較です。
iFFTは、最初の立ち上がり後の平坦部に、ジグザグのうねりが見られます。

図10. 折れ線の場合のiFFTとLaplace
図10. 折れ線の場合のiFFTとLaplace

両者の誤差は、図7のプルーの波形です。
0.4ns付近で、60ppm程度の誤差があります。

図11は、矩形波をBessel LPFに通した場合の、iFFT(N=256)とLaplaceの波形の比較です。
目で見る限りは両者の波形のズレ(誤差)は認められません。

図11. Bessel LPFの場合のiFFTとLaplace
図11. Bessel LPFの場合のiFFTとLaplace

フーリエ変換のNをどのように選ぶかは、解析する波形の高周波成分によっても異なりますが、通常の反射波形の場合、折れ線の波形なら、1,024と考えます。
この場合、標準誤差は100ppm程度です。図6を参照ください。

折れ線ではなくて、ベッセルLPFで生成した波形の場合、図9によると、N=256でも標準誤差は10ppmなので、十分と考えます。

フーリエ変換とベッセルLPFについては、数回に分けて述べました。
幸いなことに、PCの性能が向上して、N=4,096程度の高次のiFFTでも性能上の問題は感じられません。
是非活用していただければと思います。
なお、筆者の環境(Core i5-12600KF)では、N=16,384程度が限界と感じました。

碓井有三のスペシャリストコラムとは?

基礎の基礎といったレベルから入って、いまさら聞けないようなテーマや初心者向けのテーマ、さらには少し高級なレベルまでを含め、できる限り分かりやすく噛み砕いて述べている連載コラムです。

もしかしたら、他にも気になるテーマがあるかも知れませんよ!