- ベストアンサー
エクセルで周波数特性?
周波数特性(ボード線図)を描きたいのですが、データは「時間」、「正弦波のデータ(入力)」、「実験による正弦波に似たデータ(出力)」です。この時、振幅と、位相角を計算したいのですが、エクセルで可能でしょうか?計算のやり方を教えて下さい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
FFTしたあとでどうすればよいのかが分からなかったんですね。 フーリエ変換というのは、信号波形f(t)をsin/cosで表す方法です。 もし単一の周波数ωの信号であれば、 f(t) = A * { cos(ωt) + i * sin(ωt) } + A' * { cos(ωt) - i * sin(ωt) } i : 虚数 と表すことが出来ます。 (A,A'は周波数+ω、-ωのところでの複素振幅) フーリエ変換して得られたデータというのは、このA, A' と ωにほかなりません。 つまり信号の位相も振幅も求まっているのです。 1.FFTのデータから求める方法 いま、出力データが単一周波数fしか持たないのであれば、全パワースペクトル(パワースペクトルの合計)の平方根は振幅になります。 が、どうせノイズが含まれているでしょうから、目的の周波数のパワースペクトル部分だけを抽出して平方根をとればよいかと思います。 位相は、スペクトルの複素数で表されています。実部はcosで虚部はsinですから、実部を横軸、虚部を縦軸に取ったグラフに、複素振幅の値(周波数がfのところのFFTの結果)をプロットすると、原点からその値の点のベクトルをかくことが出来ます。 そのベクトルの方向を、虚部の軸に対する角度で表すと、f(t) = sin( ω*t + θ) のθと等しくなります。 つまり時間tに対する位相θが分かりますので、入力波形の位相との差をとれば、入力信号に対する出力信号の位相が求められます。 2.ついでですからFFTを使わないもう一つの方法です。 出力データを正弦波(sin)としてフィッティングを行い、振幅と位相を求める方法でもまあよいでしょう。 f(t) = A * sin( 2*π*f*t + B) として、fは入力した周波数と同一なのできめ打ちします。 数値A,Bをどこかのセルに入れて、データのとなりに上記式(式の中でA,Bを参照)の値を入れていきます。 次に、データとこの式の値との差の2乗をとり、その差を全部sum()で合計するセルを用意します。 このsum()の値が最小になるようにA,Bを決めるのが最小二乗法です。 エクセルのツールからソルバー(アドインなのでなければ導入してください)を選択して、目的のセルをsum()のセルにして最小を目標とし、変化させるセルはA,Bのセルを指定して実行すれば、結果が入ります。 どちらでもお好みのものをどうぞ。 なお、私は電気屋さんではないから、正式にはどのような定義で導出した数値でボード線図を書くのが正しいのかは知りません。 上記は純粋に数学的な話です。