今だけ人気マンガ100円レンタル特集♪

EXCEL上でFFTをする際に窓関数を使用したいのですが、方形窓について教えてください。これは取り込んだデータにすべて1をかければよいのでしょうか?あと、方形窓を使用すると周波数分解能があがる?というようなことが調べたらのっていたのですが、どういうことなのでしょうか?どなたかお答え下さい。

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

A 回答 (3件)

というか方形窓は FFT の基本ですよね。



FFT の考え方は、2べき数のサンプリングされた時系列データがあって、それが無限に繰り返されているとしたときの、周波数スペクトル(とその位相)を計算するものです。

(おっと、本来は逆ですね。以下、蛇足です。無限に繰り返される時系列データを、方形の窓関数で切り出して、スペクトルを計算する、というのが離散フーリエ変換です。ついでながら FFT とはちょうどサンプリングデータ数が2べき数の時に素早く計算できるアルゴリズムのことで、基本的な性質は離散フーリエ変換と同じです。)

ところがこれをそのまま実際のデータに応用すると、サンプリングの最後のデータの次のデータは(時系列は無限に繰り返されるので)、最初のデータになります。そのときにちょうどそのような感じでデータがたまたまサンプリングできれば良いのですが、実際そうはうまくいきません。で、どうなるかというと、最後のデータと最初のデータが急に大きく変化するような具合になって、その影響が FFT の結果に現れてます。つまり本来ない周波数成分が、最初と終わりの不連続(?)なデータによって現れたりします。

この問題を回避するのが方形以外の様々な「窓関数」です。窓関数を見ればお分かり頂けるとおもいますが、いずれも最後と最初のデータを小さくするようになっており、上記の影響を少なくしようとしているのが分かると思います。しかしながら、窓関数の影響も勿論あって、その多くの場合、得られるスペクトルがピークが低く、幅が広がるように「ぼけた」感じになってしまいます。この意味で、質問者さんがおっしゃるように「周波数分解能が下がる」わけです。
    • good
    • 0

参考サイトを見てください。


いろいろな窓関数のスペクトルが載っています。

比較してみるとわかるのですが、方形窓のメインローブの幅は小さいので、周波数分解能が高くなります。

逆に方形窓ではサイドローブの減衰が小さく幅が大きいので、小さい信号が埋もれてしまうため、ダイナミックレンジが小さくなってしまいます。

また、計測の最初のデータと最後のデータがなめらかにつながらないことから、リンク効果による計測誤差も現れるので、データの計測の始端、終端が中央付近のデータに比べてかなり小さいようなデータ以外ではあまり使用されないようです。

参考URL:http://www.orixrentec.co.jp/tmsite/know/know_mad …
    • good
    • 0

方形窓の使い方ですが、データを取り込んだ時点で既に方形窓をかけたことになっているので、特に何もしなくて結構です。



周波数分解能は、周波数成分をどれだけ細かく区別できるかです。例えば信号に周波数の近い成分が複数含まれていても、周波数分解能が低いとそれらを一つと見なしてしまいます。

方形窓は周波数分解能は高いのですが、サイドローブが大きく、小信号が埋もれてしまうので注意が必要です。
    • good
    • 0

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QExcelで4096点以上のFFTの方法

Excelでは4096点までのFFTしかできませんが、4096点以上のFFTをかける方法(VB?)をご存知の方いらっしゃいましたらお教えください。

Aベストアンサー

下記などご参考まで。プログラムをそのまま公開されています。
http://tsuyu.cocolog-nifty.com/blog/2007/03/publi.html


#プログラムの始めのn=の行とDimの行の数字を適切に修正して使います。

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}...続きを読む

Q周波数解析をエクセルツール『フーリエ解析』で実施したいのですが・・

周波数解析をエクセルツール『フーリエ解析』で実施したいのですが・・
時刻歴を持った波形をエクセルのフーリエ解析にかけたところ以下のような結果が出ました。

時刻(s)波形(風速)(フーリエ結果)
0 0 4964.547892
0.01 0.016148 162.934386092482+757.485796541738i
0.02 0.024223 -176.671853947744+679.108499109482i
0.03 0.032297 -38.1198577747876+304.999881074942i
0.04 0.040371 -33.7184553866481+283.069540754i
0.05 0.047921 67.2878230094194+268.189434427773i
0.06 0.055471 -5.3340068659851+181.755877831686i
0.07 0.063021 43.7700366445313+188.325607658826i
0.08 0.070571 95.1628904739282+115.524911946043i
0.09 0.078121 79.1610244918527+286.809861194846i
0.1 0.084849 -20.9326884388047+207.486443103952i
0.11 0.091578 -10.0874722910491+176.517532576085i

この場合の結果をパワースペクトル密度にしたいのですが,
一番上が定常分で,事項以降が ωt,2ωt,・・・nωtということに
なって,それぞれの実部^2+虚部^2の平方がスペクトルになると思いますが
これを横軸周波数のおなじみのグラフにするには横軸の周波数はどのよう
に考えればいいのでしょうか。
(たとえば2ωtの項の場合の周波数はいくらになる?)
また,風速のパワースペクトルの単位はどのようになるでしょう。
基本的な質問だと思います。とても恥ずかしいのですが,ご教授いただけますか。
もしかすると根本的な間違いをしている気もします・・

周波数解析をエクセルツール『フーリエ解析』で実施したいのですが・・
時刻歴を持った波形をエクセルのフーリエ解析にかけたところ以下のような結果が出ました。

時刻(s)波形(風速)(フーリエ結果)
0 0 4964.547892
0.01 0.016148 162.934386092482+757.485796541738i
0.02 0.024223 -176.671853947744+679.108499109482i
0.03 0.032297 -38.1198577747876+304.999881074942i
0.04 0.040371 -33.7184553866481+283.069540754i
0.05 0.047921 67.2878230094194+268.189434427773i
0.06 0.055471 ...続きを読む

Aベストアンサー

> これを横軸周波数のおなじみのグラフにするには横軸の周波数はどのように考えればいいのでしょうか。

例えば、256点のデータをエクセルで「フーリエ解析」したとします。結果も256点(#0~#255とします)出てきます。ただし、パワースペクトル(複素数の実部^2+虚部^2)にすると、#1~#127と#255~#129は対称形になっていますから、実際には129点の結果になります。
さて周波数ですが、この#1は

 元のデータ256点の中に、ちょうど1周期現れる周波数

に相当します。サンプリングの定理から、最大周波数は、256点の中に128周期の波で、周期は2点毎の波になります(#128)。

具体的に、例えばデータ間隔が1秒で全256点の場合、#1の周波数は1/256Hz、#2の周波数は1/128Hzになります。

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エクセルを使用してデジタルフィルタのハイパスフィルタ・ローパスフィルタの掛け方を教えてください。

タイトルどおりなのですが、エクセルを使用してデジタルフィルタのハイパスフィルタ・ローパスフィルタをかけたいです。

ご存知の方、よろしくお願いします。

Aベストアンサー

わたしはわかりませんが、こんなページがありました。

エクセルを使用してデジタルフィルタのハイパスフィルタ・ローパスフィルタの掛け方を教えてください。
出来ましたらそのまま使える式をお願いいたします。

http://q.hatena.ne.jp/1204546061

Q高速フーリエ変換でデータ数が2のべき乗でない時

こんにちは。現在、フーリエ変換について勉強しているのですが、ちょっとわからないことがあったので質問させていただきました。

質問内容は高速フーリエ変換についてで、cooley&tukeyのアルゴリズムを利用すると、データが2の冪乗個のときは計算量をО(NlogN)に減らせる事ができるというものでした。

しかしデータが2の冪乗個でないとき。例えばN=5000くらいのときはデータを切り取って無理やりN=4096(=2^12)みたいな感じにすれば良いんですよね?
やっぱりその時って、N=5000で通常の離散フーリエ変換したときと周波数値に誤差が出ると思うのですが、それはどうやったら計算できるのでしょうか。。。

どなたかご教授していただければ幸いです。

Aベストアンサー

離散フーリエ変換は、信号が周期的であることを前提としています。
離散フーリエ変換でのデータ数Nは、離散時間信号の周期に当たります。変換の結果は線スペクトルとなります。
N=5000がその信号の1周期なのでしょうか。
もしそうならば、4096にすれば、誤差が大きくなるでしょう。
N=5000で変換すべきです。この場合にも高速アルゴリズムが
存在します。#1の方のとおりです。
FORTRANの時代には、パッケージがありました。
NはN=2^m*3^n*5^k*7^Lだったと思います。

もうひとつの考え方は、有限持続時間信号のフーリエ変換としての
適用です。これは、連続スペクトルとなります。データ数Nは
スペクトルの分解能に関係します。サンプリング周波数をNで割った
ものが周波数分解能となります。
実際のデータよりも2倍程度のNを使うことが多いと思います。
データ数が5000ならば、Nは8192とし足りないデータには、
0を詰めます。これならば、2のべき乗のNを選べます。
この場合、逆変換は周期的な拡張が行われることに注意が必要です。

離散フーリエ変換は、信号が周期的であることを前提としています。
離散フーリエ変換でのデータ数Nは、離散時間信号の周期に当たります。変換の結果は線スペクトルとなります。
N=5000がその信号の1周期なのでしょうか。
もしそうならば、4096にすれば、誤差が大きくなるでしょう。
N=5000で変換すべきです。この場合にも高速アルゴリズムが
存在します。#1の方のとおりです。
FORTRANの時代には、パッケージがありました。
NはN=2^m*3^n*5^k*7^Lだったと思...続きを読む

Q原波形のノイズ除去方法(FFT、逆FFT)

始めに、僕は数値解析等にはかなりの未熟者です。
今、微量な電流を拾ってそれを200倍に増幅した原波形があるのですが、それには多くのノイズがはいってしまい見にくいんです。それでそのノイズを除去したいのです。
今考えているのはFFTをかけてでてきた周波数を逆FFTを行いノイズを除去しようと考えています。もし他に簡単にノイズを除去できる方法があれば教えていただきたいのですが。
今、自分のなりの考えで行うとしてもその処理の仕方がまったくわかりません。どのソフトを使うのが最適なのかがわかりません。こういう場合で使いやすいソフトってありますか?

わかりにくい説明ではありますが、分かる人がいましたらアドバイスください。

Aベストアンサー

No.2です。

画面全体がノイズだらけになるとしたらデータの処理だけで
ノイズを除去する事は難しいかもしれません。
データの再取得が可能であるならば再取得してください。
その際、あらかじめアナログ回路部分でノイズを除去しておいてデータを取得するようにしてください。
データのサンプリング時にエイリアシングが発生して信号にかぶさった場合には後処理でノイズを除去する事は不可能です。


フィルタについてはアナログ回路で実現するもの、AD変換後にデジタル回路で実現するもの、データ取得後にソフトウエアで行うものなどが有ります。

>多少信号のでている時間、大きさに誤差が出てきてしまう
とのことですが、フィルタを通した場合一般的には時間遅れが生じます。
どれだけ遅れるかはフィルタが決まれば決定されるのでその分補正すれば良いです。
大きさについては適切に設計されていれば大きくずれる事はありませんが
フィルタの種類によっては通過域でゲインが変化しないものと多少の変化があるものとが有るので用途によって使い分けします。

フィルタ処理の具体例を挙げます。
No.3さんの計算と同じものです。
/* FIRフィルタのサンプル */
#define DATA_SZ1000 /* データの個数 */
#define KN2
#define KEISU_SZ(2*KN+1) /* フィルタの係数の個数 */

float input[DATA_SZ]; /* 入力データ 適当な方法で初期化すること */
float output[DATA_SZ]; /* 出力データ */
float keisu[KEISU_SZ] = {1.0/KEISU_SZ} ; /* 移動平均フィルタの場合 */

void fir( float *in, float *out, float *ks ){
int i,j ;
float x;

  for( i=KN ; i<DATA_SZ-KN ; i++ )
    {
      x= 0 ;
      for( j=-KN : j<=KN ; j++ )
      {
         x += in[i+j] * ks[j+KN] ;
      }
      out[i] = x ;
   }
} /* インデントを付けるため全角スペースを使用しています */

もっと具体的には
入力データ d0,d1,d2,d3,d4,d5,d6,d7
係数データ k0,k1,k2,k3,k4
出力データ ______x2______  上下をそれぞれ掛け算したものの合計
x2 = ( d0*k0 + d1*k1 + d2*k2 + d3*k3 + d4*k4 )

出力のx3を求める場合は入力データを1個左にシフトします。
入力データ d1,d2,d3,d4,d5,d6,d7
係数データ k0,k1,k2,k3,k4
出力データ ______x3______ 
x3 = ( d1*k0 + d2*k1 + d3*k2 + d4*k3 + d5*k4 )

これから分かるように x0,x1 を求めるにはデータが足りません。
どこかから(例えばd0で置き換える)データを持ってくるか、無いものとするしかありません。

係数の数を増やせばより高性能なフィルタとすることが出来ます。
係数を決める、つまりはフィルタを設計する方法の説明はここでは難しいです。
次数がそれほど大きくなけれはエクセルでも計算できます。

No.2です。

画面全体がノイズだらけになるとしたらデータの処理だけで
ノイズを除去する事は難しいかもしれません。
データの再取得が可能であるならば再取得してください。
その際、あらかじめアナログ回路部分でノイズを除去しておいてデータを取得するようにしてください。
データのサンプリング時にエイリアシングが発生して信号にかぶさった場合には後処理でノイズを除去する事は不可能です。


フィルタについてはアナログ回路で実現するもの、AD変換後にデジタル回路で実現するもの、データ取得...続きを読む

QEXCELにてローパスフィルタを作成する

実験の測定データをEXCELでデータ整理しようと考えております。データ整理のためローパスフィルタをかけたいのですが、具体的にどういった式、もしくはEXCELの機能を使用したらいいのでしょうか?デジタルフィルタが良く分からないのでよろしくお願いします。
ちなみにローパスフィルタは1000Hzをかけたいです。

Aベストアンサー

時系列データの処理ならば

OutputData(n+1) = OutputData(n) + (InputData(n+1) - OutputData(n)) * dt / T

dt:データのサンプリング間隔
T:フィルタの時定数 1/2πf
f:カットオフ周波数
n,n+1:それぞれn個目,n+1個目のデータをしめす。

でいけると思いますが、一次のパッシブなんで効果が薄いかも。(普通はベッセルかけるんでしょうけど、そこまではわからない)

Qフーリエ変換のデータの補間について

Excelでフーリエ変換をする際、データ数は2のべき乗でなければならないと学校で習いました。
データ数が2のべき乗でない場合は2のべき乗になるようにデータを増やす、または減らす必要があるらしいのですが、どうやったらデータ数を増やす、または減らせるのでしょうか??

例えば、255×255のデータを256×256にするにはどうやったらいいのでしょうか。(MRI画像などは256×256だそうです)
教えてください。

Aベストアンサー

> MRI画像再構成についての課題です。

 なるほど、それなら話は通じます。実務じゃないんですね。

 周波数空間(いわゆるK空間)の中に、直流成分(空間周波数(0,0))を中心として、等間隔の格子点(n,m) (-N<n<N, -N<m<N)における複素数のサンプル値s(m,n) = p(m,n)+iq(m,n)が与えられている(p,qは実数)。これを複素逆フーリエ変換して画像を作るためにFFTを使う。

> コンピュータのサンプリングは奇数個でなければならない

 これはおかしい。奇数個でなければならないなんてことはないし、N-1まででやめる理由もない。例えば(-N≦n<N, -N≦m<N)の範囲を測ったって良いのですから。しかし、文句を言っても始まらない。ま、この課題に限っては、話の前提条件が(-N<n<N, -N<m<N)ということなんだな、と考えるしかありません。

> FFTをする場合は2のべき乗個なければならない。

 既に何度も出ている通り、これは数学的には誤りですが、工学的には「さもありなん」というところです。

 ご参考までに、フーリエ変換の定義を少し調べれば分かる、重要な性質を幾つか挙げておきます。

● FFTと逆FFT(IFFT)は、定数倍の違いを無視すれば全く同じ計算。(FFTを2回繰り返すとどうなるか、式を調べてみると面白いでしょう。)

● 2次元FFTは、格子点のそれぞれの行について1次元FFTして、その結果を今度はそれぞれの列について1次元FFTすれば良い。

● 複素IFFTをやるから、結果も複素画像になります。その実部をf(x,y)、虚部をg(x,y)と書くことにすると、
f(x,y) = (1/2)IFFT[(p[m,n]+p[-m,-n])+ i(q[m,n]-q[-m,-n])]
g(x,y) = (1/2)IFFT[(p[m,n]-p[-m,-n])+ i(q[m,n]+q[-m,-n])]
という関係が成り立つ。(従って、g=0となることが分かっている撮影シーケンスの場合(大抵そうです)には、0≦mの部分だけしか測定しないことによって撮影時間を半減することも可能。)

● 1次元IFFT(周期M)に喰わせる複素データの列をa[0], a[1], ..., a[M-1]とすると、a[0]は直流成分、a[1]とa[M-1]が周期Mのsin波形、a[2]とa[M-2]が周期M/2のsin波形…の振幅と位相を決める係数です。周期の区切りが0~M-1になってる訳です。
 一方、K空間の方は区切りが-N~Nになっている。FFT(IFFT)はデータが周期Mを持つことを前提にしていますから、
s(m,n)=s(m+jM,n+kM) (j,kは任意の整数)
が成り立つものと考えます。従って、
s(M-m,M-n)= s(-m,-n)
s(M-m,n)= s(-m,n)
s(m,M-n)= s(m,-n)
です。言い換えると、添え字はmodulo Mで0~M-1に書き換えてやる、ということです。

 じゃ本題。N=127、M=256の場合を考えると、s(128,n)(n=-N+1~N-1)やs(m,128)(m=-N+1~N-1)のデータが存在しないからナントカする必要がある。さて、これらは一体何かというと、最も高い周波数の空間周波数成分、つまり画像上で言えば周期2のsin波形(いろんな方向の波がありますが)の振幅と位相を表している。でもその成分については(そして、それより高い空間周波数の成分についても)測定しなかった。
 
 ならば、そんな成分は画像にも存在すべきでないだろう、というわけで、ここんとこには0を詰める。と考えるのが普通でしょう。
 ところがですね、被写体がシャープでコントラストの大きい輪郭を持っていたりすると、s(127,n)やs(m,127)やs(129,n)やs(m,129)の絶対値が無視できない大きさになる[ANo.4の「両端点」の話です]。すると、0を詰めたことでK空間のs(128,n)やs(m,128)の箇所に鋭い段差が生じます。このような段差は画像上では周期2のsin波形のさざ波(ringing)として現れる。特に、被写体の輪郭に沿って波紋のようなartifactが生じます。
 いや、実は話は逆で、そういう被写体を撮影する以上、正確な画像を作りたかったらもっと高い周波数までMRIで測定すべきなのに、測ってない訳です。

 で、そのringing現象をどう考るか。
「高い空間周波数成分を持つ被写体を撮影したのに、高い周波数については測ってないんだからringingはしょうがない。単に0を詰めとけ。」という「正論」の他に、
「いや、被写体に実在していないringingが出るのはまずい。元来、高い空間周波数成分を持つ被写体を撮影したのに、高い周波数については測ってないんだから、ぼけた画像しか得られないのが当然だ。だからs(127,n)がほぼ0になるようにK空間のサンプルに平滑化フィルタ(|n|と|m|が小さいときはほぼ1で、|n|や|m|がNに近い時には0になるような滑らかな実数値関数h(m,n))をかけ算しろ。」も実に尤もな話だし、
「確かにringingは困るが、せっかく127の所まで測ったんだからぼかさないでなんとか活かそうよ。少々嘘をつくことになるが、たとえばs(128,n)の値はs(127,n)とs(129,n)の平均値で代用すれば段差は生じない。」という考え方もある。
 ここんとこの判断は、「何を撮影して、結果の画像をどう使うつもりなのか」にも依るでしょう。そういうことまで考えて、いろんな処方について利害得失を検討するのが、ですから、この課題の真髄かと思います。

> MRI画像再構成についての課題です。

 なるほど、それなら話は通じます。実務じゃないんですね。

 周波数空間(いわゆるK空間)の中に、直流成分(空間周波数(0,0))を中心として、等間隔の格子点(n,m) (-N<n<N, -N<m<N)における複素数のサンプル値s(m,n) = p(m,n)+iq(m,n)が与えられている(p,qは実数)。これを複素逆フーリエ変換して画像を作るためにFFTを使う。

> コンピュータのサンプリングは奇数個でなければならない

 これはおかしい。奇数個でなければならないなんてことはないし、N-1まで...続きを読む

Qパワースペクトルとは?

パワースペクトルについて説明してくださいと先生に言われました。
全くわからない人に説明するので端的にわかりやすく説明したいのですが誰かできる人はいませんか?ちなみにぼくも詳しいことは全然わかりません。
本などを見ても式があったりしてそれをまた理解することが出来ません。
なんかイメージがわくような方法はないですかね?

Aベストアンサー

スペクトルとは、独立な成分それぞれについての強さをグラフにしたものです。
光の場合、光の種類を色で分類する事ができます。光といっても、その中に青はどれくらい、オレンジはどれくらいとそれぞれの色に応じて強さがあります。
光をそれぞれに分ける方法は、たとえばプリズムがあって、光をプリズムに通すといろいろな色にわかれてみえます。

ニュートンはプリズムを使った実験で有名です。一つ目のプリズムで光を分光し、赤と青の光を残して他の光を遮り、赤と青を二つ目のプリズムやレンズで一つにまとめました。その後でもう一度プリズムを通すと、いったんまとめたのにやはり赤と青しかでてこないのです。これから光の色の独立性(赤や青は、混ざらないものとして独立に扱って良い、ということ)がわかります。

このように色にはそれぞれを別々に扱ってもよいので、色ごとに物事を考えると分かりやすくなります。この色ごとについての強度を「光のスペクトル」、といいます。
強度はふつう「時間当たりに光りが運ぶエネルギー」(パワー)で表すので、この時は「パワースペクトル」です。

こんなふうに物事を自然な「成分(光の時は色)」にわけて考えた物がスペクトルです。詳しくは座標とフーリエ成分の関係について(フーリエ変換について)勉強するといいと思います(電磁場の実空間の振動とフーリエ空間上での振動の対応として)。

スペクトルとは、独立な成分それぞれについての強さをグラフにしたものです。
光の場合、光の種類を色で分類する事ができます。光といっても、その中に青はどれくらい、オレンジはどれくらいとそれぞれの色に応じて強さがあります。
光をそれぞれに分ける方法は、たとえばプリズムがあって、光をプリズムに通すといろいろな色にわかれてみえます。

ニュートンはプリズムを使った実験で有名です。一つ目のプリズムで光を分光し、赤と青の光を残して他の光を遮り、赤と青を二つ目のプリズムやレンズで一つにま...続きを読む


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

人気Q&Aランキング