【お知らせ】カテゴリの見直しについて

FFTをしてスペクトルを求めてグラフにしたいと思います。
理論が良く分かっておらず、私が考えたことが正しいのかどうか自信がないので、教えてください。

(1) X軸を周波数とするグラフの座標の数は、スペクトルのライン数になる。
スペクトルのライン数 = FFTの件数 ÷ 2.56
これが正しいと、X軸の最大値が周波数レンジになるはずですが…。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>X軸の最大値が周波数レンジになるはずですが…。



この質問は参考サイトの周波数レンジと、自分で造ったプログラムまたはエクセルなどによる解析結果の最大値が異なることに対する質問では似ないでしょうか?

FFTでは、ナイキストによりサンプリング周波数の半分までの周波数しか解析できません。おそらく最大値というのはその値になっていると思います。

参照サイトの例を用いると、サンプリング周波数は25.6kHzですので、FFTで解析すると、その半分の周波数の12.3kHzまで算出することができるのです。

しかし、小野測器などの専用FFTアナライザーでは、ちょっと取扱を変えています(他のメーカーでも私が使用したことがあるFFTアナライザーはみんなそうなっていました)。

本来1/2まで解析できるのですが、それを変えて1/2.56までしか表示しないようにして、それを周波数レンジとしています。
2048個のデータからは1024個の解析ライン数ができるのですが、800個のラインで打ち切っているようです。

なぜそうしているのか、その理由はよく知りませんが、801以上の解析ラインに対するデータの信頼性の問題ではないかと思っています。

この取扱の違いが、一般的なFFTプログラムを用いて出されるX軸の最大値と小野測器のいう周波数レンジの違いとなって現れます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

とてもよくわかりました。
今までの悩みが解消されました。

お礼日時:2007/03/30 22:34

まだ詳しくURL先を見ていないので詳しいこといえませんが


2.56というのは、このFFTのサンプリング点の数なので
自分で処理をするとなると勝手が違ってくると思います。
    • good
    • 0

質問の意味がよく分からないのですが、例えば、Excelの「ツール」→「分析ツール」→「フーリエ解析」で、ある波形データをFFT演算した後に出てくるデータ列に対応する最小周波数と最大周波数を知りたいということでしょうか?



Yes→時間間隔をΔt [s] として取った波形 A(1)~A(N) をFFTにかけて、B(1)~B(N)というデータ列が得られたとき、B(1)に対応する周波数 f1 [Hz]は、f1 = 1/(N*Δt)、B(2)の周波数は f2 = 2/(N*Δt)、・・・、B(N)の周波数は fn = 1/(Δt) となります。

例えば、Δt = 1ms でとった1024点からなる波形をFFTにかけたとき、周波数範囲は 1/1.024 Hz、2/1.024 Hz、・・・、1000 Hz になります。波形取り込み時間(N*Δt)が 1s なら f1 = 1Hz から 1Hz きざみのスペクトルになります。0.1Hzの分解能のスペクトルを得たいのなら、10秒間の波形データを取る必要があります。一方、最大周波数は、1/Δt ですので、10kHzまでのスペクトルを得たいのなら、Δt = 0.1 ms とする必要があります。

FFTだと N が2の倍数しか許されないので、(N*Δt)を 1s にしようとすると、Δt がキリのいい数値になりません(N = 1024 だと Δt = 1/1024 [s])。私個人としては、そういうのが気に入らないので、FFTでなくDFTを使って、N = 1000、Δt = 1ms とか、キリのいい数値にして計算したりします(N が10000未満ならExcel VBAで DFT 計算させてもそんなに時間がかからないので)。趣味の問題ですが。

Excelの分析ツールのフーリエ変換の結果は複素数で出てきますので、関数 IMABS(FFT後の数値)で絶対値に変換すれば振幅スペクトルになります。振幅をdB単位で出したいなら20*log10(IMABS(FFT後の数値))としてください。関数 IMABS()は「ツール」→「アドイン」で「分析ツール」にチェックしないと使えなかったと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

今FFTアナライザのようなものを作っています。
指定されたサンプリング件数と周波数レンジを使って、サンプリングしたデータをFFTし、リニアスペクトルのグラフを表示するものです。

http://www.onosokki.co.jp/HP-WK/c_support/newrep …

↑のページに書いてあることを参考しています。
質問も↑のページにあることを実現すれば良いかどうかを問う内容です。

お礼日時:2007/03/26 23:09

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフーリエスペクトルの振幅について

ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの
振幅値について教えて下さい。

今想定している離散フーリエ変換の式は一般的なもので
Σ(k=0~N-1) f(k)exp(-2πkni/N)
を考えています。
また、離散フーリエ変換して得られるスペクトルは
√(Re^2+Im^2)
で計算します。

離散フーリエ変換を適用する関数を、
振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。
(この2つの信号は別々の信号で合成されていません。)
サンプリング周波数を20[Hz]とした場合、
サンプリングして得られるデータ列はそれぞれ、
直流: 「1, 1, 1, 1」
正弦波: 「0, 1, 0, -1」
となると想定されます。
(正弦波をサンプリングする場合は位相が関わってきますが、
今回は気にしないで下さい。)

このデータ列に対して上記の離散フーリエ変換を適用した場合、
得られるフーリエスペクトルの振幅値はそれぞれ、
直流: 「4」(直流のフーリエスペクトルの振幅値値)
正弦波: 「2」(5[Hz]のフーリエスペクトルの振幅値)
となります。
(データ点数は上の通り4点)

ここで質問なのですが、
離散フーリエ変換して得られるスペクトルの振幅値から
元の関数の振幅値を求める場合、
フーリエスペクトルをサンプリングの総データ点数で割ることは
数学的に納得できます。
しかしこの例の場合、フーリエスペクトルを総データ点数で割ると、
直流: 「4 -> 1」
正弦波: 「2 -> 0.5」
となってしまい、直流は正しいのですが、
正弦波の元の振幅値を正確に求めることは出来ません。
フーリエスペクトルの振幅値から正弦波の振幅値を正しく求めるには、
「フーリエスペクトルの振幅値*2/データ点数」
としてやらなければいけません。

上記のことに関して、
なぜこのようになるのかを(2をかける理由を)教えて頂けないでしょうか。

ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの
振幅値について教えて下さい。

今想定している離散フーリエ変換の式は一般的なもので
Σ(k=0~N-1) f(k)exp(-2πkni/N)
を考えています。
また、離散フーリエ変換して得られるスペクトルは
√(Re^2+Im^2)
で計算します。

離散フーリエ変換を適用する関数を、
振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。
(この2つの信号は別々の信号で合成されていません。)
サンプリング周波数を20[Hz]とした場合、
サンプリングし...続きを読む

Aベストアンサー

離散フーリエ変換というのは、実質離散フーリエ級数展開なので、
フーリエ級数展開を考えます。

f(t) = a0/2 + Σ[n=1→∞] { an cos (nωt) + bn sin (nωt) }

f(t)の周期をTとして、ω=2π/Tです。

直流成分の振幅といっているのはこの第1項a0/2のことで、
サイン成分の振幅はbnのことです。

問題文の離散フーリエ変換の式

>Σ(k=0~N-1) f(k)exp(-2πkni/N)

は複素フーリエ級数展開なのでオイラーの公式

cos nωt = [e^{inωt}+e^{-inωt}]/2
sin nωt = [e^{inωt}-e^{-inωt}]/2i = = -i [e^{inωt}-e^{-inωt}]/2

を使って書き直すと、

f(t) = a0/2 + Σ[n=1→∞] { ([an -i bn]/2) e^{nωt} + ([an +i bn]/2) e^{-inωt} }

an = a(-n), bn = -b(-n)の関係があるので、

cn = ([an -i bn]/2), c(-n) = ([an +i bn]/2)

と置くことができ、a0/2をc0と定義し直せば、

f(t) = Σ[n=-∞→∞] cn e^{nωt}

したがって、複素フーリエ係数が求めているのはcn = (an-ibn)/2で、その実数部はan/2、虚数部は-bn/2です。

こうなる理由は、サイン、コサインのときは正の整数だったnを複素数で取り扱うときにマイナス側に拡張したことで、同じ係数が+側と-側にわかれたためです。

離散的な場合は和が-N/2~N/2の範囲の有限項で打ち切られ、
-N/2~0の範囲が一周期ずらされてN/2~Nになっています。

離散フーリエ変換というのは、実質離散フーリエ級数展開なので、
フーリエ級数展開を考えます。

f(t) = a0/2 + Σ[n=1→∞] { an cos (nωt) + bn sin (nωt) }

f(t)の周期をTとして、ω=2π/Tです。

直流成分の振幅といっているのはこの第1項a0/2のことで、
サイン成分の振幅はbnのことです。

問題文の離散フーリエ変換の式

>Σ(k=0~N-1) f(k)exp(-2πkni/N)

は複素フーリエ級数展開なのでオイラーの公式

cos nωt = [e^{inωt}+e^{-inωt}]/2
sin nωt = [e^{inωt}-e^{-inωt}]/2i = = -i [e^{inωt}...続きを読む

QFFT・PSDの縦軸は何を意味するのでしょう?

加速度計測の結果について、PSD(パワースペクトラムデンシティ)をかけた場合、その縦軸の意味を教えてください。
また、FFTとPSDはどういう違いが有るのでしょうか?
これまでは、周波数の分布のみに着目していました。
どなたか、わかりやすく教えてください。
よろしくお願いします。

Aベストアンサー

一般に加速度センサー信号の出力は電圧です。

縦軸は係数をかけていない状態では#1さんがおっしゃるように計測した電圧の値を示しています。

よって、縦軸に物理的な意味を持たせるのには、電圧と加速度の間の換算係数をかけてやる必要があります。

フーリエ解析は時刻歴波形は正弦波の組み合わせで構成されるという仮定の下で計算を行っています。FFTの結果は横軸で示される周波数の正弦波の振幅を示しています。
電圧と加速度の換算係数をかけてやると、FFTの縦軸はその周波数成分を持つ加速度振幅を示しています。

ここで1つ問題があります。FFTはサンプリング周波数により分解能が変わります。FFTによる周波数分析は正確にいうと、離散値なので、ジャストの周波数のもをだけを表しているのではなく、ある範囲の周波数範囲にある成分を表しています。
このため分解能が変わると周波数範囲が変わり、同じ波形を分析しても振幅が変わります。
これでは分解能が異なるデータ同士は比較できないなどの問題が生じます。
そのため、周波数幅で振幅を基準化して、1Hzあたりの振幅としたものがPSDです。
PSDならサンプリング周波数が異なるデータ同士の比較ができます。

要はフーリエ振幅(FFT)はサンプリング周波数・分解能により変わる値であり、PSDはそのようなことのないように周波数幅で基準化した値という差があります。

なお、2乗表示したものをパワースペクトルと呼び、それを周波数で基準化したものをPSDと呼びますが、PSDは表示方法によって2乗した状態のあたいを表示(パワー表示)するときと、2乗した値の平方根を計算して表示することがありますので、使用する際には縦軸の表示方法については要注意です。

一般に加速度センサー信号の出力は電圧です。

縦軸は係数をかけていない状態では#1さんがおっしゃるように計測した電圧の値を示しています。

よって、縦軸に物理的な意味を持たせるのには、電圧と加速度の間の換算係数をかけてやる必要があります。

フーリエ解析は時刻歴波形は正弦波の組み合わせで構成されるという仮定の下で計算を行っています。FFTの結果は横軸で示される周波数の正弦波の振幅を示しています。
電圧と加速度の換算係数をかけてやると、FFTの縦軸はその周波数成分を持つ加速...続きを読む

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

Qフーリエ変換について教えてください

フーリエ変換をすると横軸が時間から周波数になるのはわかったのですが、縦軸が何になるのかわかりません。

一般的に縦軸はなにになるのでしょうか?

また横軸が時間で、縦軸が距離をフーリエ変換したら縦軸は何になるのでしょうか?

よろしくお願いします。

Aベストアンサー

時間関数をフーリエ変換すると結果は、その時間関数の周波数成分が
得られます。スペクトルとも言います。従って、縦軸は、周波数成分です。一般に複素数です。
大きさと偏角による表現もできます。
大きさの方は振幅特性、位相角の方は位相特性と呼ばれます。
画像のように空間座標の上の関数の場合には、フーリエ変換すると
空間周波数成分が得られます。横軸は、空間周波数(2次元)となります。
対象とする関数により結果はそれぞれ意味が異なります。
「一般に何になる」とは言えません。

>横軸が時間で縦軸が距離の場合・・・
フーリエ変換の結果は、距離を表す時間関数の周波数成分です。

フーリエ変換の対象の関数は別に時間関数でなければならないということは
ありません。従って、フーリエ変換の結果は適用する人が解釈(定義)すれば
よいと思います。
たとえば、
時間関数をフーリエ変換し、その結果の絶対値の対数のフーリエ変換を
することもあります。これの結果には、発明者らがケプストラムという名前
をつけています。Cepstrum は Spectrum から作った造語です。

時間関数をフーリエ変換すると結果は、その時間関数の周波数成分が
得られます。スペクトルとも言います。従って、縦軸は、周波数成分です。一般に複素数です。
大きさと偏角による表現もできます。
大きさの方は振幅特性、位相角の方は位相特性と呼ばれます。
画像のように空間座標の上の関数の場合には、フーリエ変換すると
空間周波数成分が得られます。横軸は、空間周波数(2次元)となります。
対象とする関数により結果はそれぞれ意味が異なります。
「一般に何になる」とは言えません。

>横軸が...続きを読む

Q振幅スペクトルから音圧レベルへの変換

先日、マイクロホンを用いて音の計測を行いました。
マイクロホンのAC出力に対し、FFT処理を施し、振幅スペクトル[dBV]を得ました。
その値(例えば-40[dBV])を音圧レベル[SPL]に変換する際に

20log(x)=-40
x=10^(-40/20)
=0.01

20log(0.01/(20*10^-6))≒54[SPL]

という計算を行ったのですが、この計算式に自信がありません。
この分野にお詳しい方がいましたら、ご指摘して頂けると非常に助かります。
どうぞよろしくお願いいたします。

Aベストアンサー

その計算式の前半は、FFTで得られた振幅の-40dBVをV単位の実効値に変換する計算なら0.01で合ってます。

後半の計算式は間違いです。
式の中の20*10^-6というのは、SPL(Sound Pressure Level)が0dBとなる音圧[Pa]のことです。つまり、音圧(の実効値)が 20*10^-6 [Pa] のとき 0 [dB SPL] と定義するということです。したがって、後半の計算式
20log(0.01/(20*10^-6))≒54[SPL]
の0.01はV単位でなく、Pa単位の数値にする必要があります。V単位をPa単位に変換するには、お使いのマイクの感度やアンプの増幅率が分かっている必要があります。

マイクの感度は普通、 dBV/Pa という単位が使われます。以下のサイトの「マイクロフォン」の(3)を参照してください。
http://www.ys-labo.com/DenkiZatugaku/DenkiZatugaku%20cont/2010/Audio.html
1Paの音圧(1kHzの周波数)がマイクに入ったとき、マイクの出力をdBV単位(1Vrms=0dB)で表した数値です。お使いのマイクの感度やアンプの増幅率を含めた測定系全体の感度を S [dBV/Pa] とすれば、P [Pa] の音圧を受けたときの測定系全体の出力電圧 E [dBV] は
E = S + 20*log10(P)
になります(log10は常用対数の意味)。したがって、出力電圧 E [dBV] から、音圧 P [Pa] を求めるには
P = 10^{ ( E - S )/20 }
を計算します。

したがって、音圧 P [Pa] を [dB SPL] 単位の音圧に変換するには、ご質問の後半の計算式の 0.01 のところにこのPを入れます。つまり
音圧 [dB SPL] = 20*log10[ 10^{ ( E - S )/20 } - 20*log10(20*10^-6) = E - S + 93.979 --- (1)
になります。93.979というのは、1Paの音圧を [dB SPL] 単位で表した数値です。

ご質問は、測定値が-40 [dBV] のときの音圧 [dB SPL]を知りたいということですが、その計算には測定系全体の感度 S [dBV/Pa] の値が必要で、それが分かれば、式(1)の E を -40 として
音圧 [dB SPL] = 53.979 - S [dBV/Pa]
で計算できます。

例えば、マイクの感度が -50 [dBV/Pa] で、アンプの増幅率が 20 dB のとき、測定系全体の感度は
S [dBV/Pa] = -50 + 20 = -30
になるので、音圧 = 53.979 - (-30) = 23.979 [dB SPL] ということになります。

その計算式の前半は、FFTで得られた振幅の-40dBVをV単位の実効値に変換する計算なら0.01で合ってます。

後半の計算式は間違いです。
式の中の20*10^-6というのは、SPL(Sound Pressure Level)が0dBとなる音圧[Pa]のことです。つまり、音圧(の実効値)が 20*10^-6 [Pa] のとき 0 [dB SPL] と定義するということです。したがって、後半の計算式
20log(0.01/(20*10^-6))≒54[SPL]
の0.01はV単位でなく、Pa単位の数値にする必要があります。V単位をPa単位に変換するには、お使いのマイクの感度やアンプの増幅率が分...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング