電子書籍の厳選無料作品が豊富!

信号処理等に使うハニングウィンドウ、ハミングウィンドウ、レクタンギュラウィンドウ、区間ウィンドウ、指数ウィンドウについて、それらが
どういう時に使われるのか?
どういう風につかうのか?
どういう特徴を持っているのか?
を簡単に教えてください。
よろしくお願いします。

A 回答 (3件)

こんにちは。



私の分野は振動、音響等の信号処理です。
ご存じかもしれませんが、窓関数(ウィンドウ)はFFTを使うために必要な前処理で使います。
FFTは時系列の信号に、ある「周期Tの周期性がある」という仮定を立てた上で周波数解析を行うものです。
しかし実際の時系列信号はそうではないため、ウィンドウを掛ける必要があります。
(言葉不足ですが前置きはこれくらいで)

(1)矩形窓(Rectangular Window)
これは単純に周期Tの区間だけで切り取った関数です。窓関数は、オリジナル信号に手を加えて現実の
信号とは異なる信号にしてしまうので、何も手を加えない矩形窓が本来はベストの窓関数です。
 しかし、実際の時系列信号では、最初と最後が0になっていないと不連続な周期信号となるので、
実際にはなかなか使えないようです。

[主な用途]過渡信号等(衝撃パルスなどに使えると思います)

(2)ハニング窓
 他の窓関数もそうですが、これは周期Tの最初と最後を0にする窓関数です。
(最初と最後が0になるような処理を施し、連続な信号を作るのが窓関数の主な目的と思います)
 通常のFFTアナライザなどではこのハニング窓がもっとも一般的なようです。

[主な用途]定常ランダム信号(音圧信号、加速度信号等)


 そのほかについては私も使ったことがないので申し訳ないですがよく分かりません。
(余り私の分野では見かけたことはない)

私の分野では、ハニング窓を使っておけばまあ問題ないと思います(間違っていたら申し訳ございません)。

もしkogatinさんが信号処理の初心者であれば、次の参考書などがわかりやすくてよいですよ。
(絵やC言語のソースなどもあってとても見やすいです)

「見てわかるディジタル信号処理」 坂巻佳壽美 著
 工業調査会/\2,100税抜/ISBN4-7693-1162-1
    • good
    • 2

補足見ました。

少し説明不足だったようです。
説明では「今(t=0)」の値を計算する方法しか、示しませんでした。「株価の変化をなだらかに」見る場合、「今」をいろいろにずらして計算してみて、はじめて「今の(なだらか化した)株価がどう変わったか」のグラフが描ける訳です。式で書けば今をt=T (T<0)、なだらか株価をn(T)と書くと
n(T) = [f(t+T)W(t)]を積分したもの
となりますね。
例えばW(t)=2W(t-1)
であるようなウインドウを使ったとしましょう。
 三日前にだけ1000円高があった(他の日は変化無かった)とすると、n(T)は
n(-3)=500円高、
n(-2)=250円高、
n(-1)=125円高、
n(0)=63円高という風に、その影響が弱まりながら後を引く形になります。だから
 三日前に1000円高、二日前に1000円安があった、というばあいには、
n(-3)=500円高、
n(-2)=250円安、(250 - 500)
n(-1)=125円安、(125 - 250)
n(0)=63円安 (63 - 125)
それぞれの「後引き」がだいたい打ち消し合うことで
瞬間的変化は余り見えないようにする
でも三日前の変化よりは二日前を重要視
という効果が現れる。
これが「なだらかにする」ということで瞬間的に上がったがすぐ下がった、というのに一喜一憂しない訳ですね。
    • good
    • 1
この回答へのお礼

御回答ありがとうございました。
stomachmanさんの言われてることはほぼ理解できました。
自分の生活というかスポーツとかのスコアを記録したり
しているのですが、たまたま集中できなくてスコアーが
悪かった時の影響がいつまでも残る、下手だった時の
スコアの影響がいつまでも残る、ということに
なんだか不条理さを感じていました。
違うところから「ウィンドウって何?」という疑問が
出てきたわけですが、そんな物にも使えそうですね。
お陰様で、一つ賢くなれました。どうもありがとうございました。

お礼日時:2000/12/14 10:06

用語については数学辞典(図書館に大抵ありますよ)や専門書を見るべきだと思います。

質問者がどこまでご存じか、また、何にお使いになるのか、に依りますから。が、おおざっぱな概念は以下のようです。
(1) 無限に続いている信号の内の、注目する部分だけを調べたいときに、そこの部分を取り出すのにウインドウを使います。信号をf(t)とすると、ウインドウもtの関数としてw(t)と表せます。そして取り出した信号は
g(t) = f(t)w(t)
です。
 w(t)の特徴:tの絶対値が大きいときにはw(t)=0です。このような関数なら何でもウインドウになりうるのですが、w(t)のグラフの面積が1になるように、定数倍して規格化します。(以下の説明では、自明かつめんどくさいので規格化の係数は省略します。)
(2) ウインドウは、たとえば測定した信号波形の周波数成分を調べるために離散フーリエ変換(DFT: discrete Fourier transform)をやる時に必要です。数学的な意味でのフーリエ変換は、無限に続く信号f(t)からその周波数スペクトルF(s)を求めるものですが、f(t)が数式で与えられているのでない限り、実際には計算できないですね。それで離散フーリエ変換をやります。これはN点のサンプル値を入力して、周波数成分(N点の複素数値)を出すものです。
(3) 離散フーリエ変換の性質として、データは周期的(周期N)だと仮定して計算をしてしまいます。だから単にデータを切り取ってくるようなウインドウ:例えば
w(t) = ( t1< t < t2 のとき1, その他では0)
を使うと、データのN個目と1個目との間に(本来なかった)段差ができてしまう。この段差はあらゆる周波数に影響を及ぼすので都合が悪い。そこで、切り取ってくる区間の両端をなだらかに0に落としてやります。たとえば
w(t) = 1+cos(at) (ただし -π < at < π。その他は0)
という風に。
(4) 「ウインドウを掛ける」ことによって、元の信号f(t)がg(t)に変形されるわけですから、離散フーリエ変換して出てくる結果にもウインドウの影響がどうしても表れます。そこで、どんな影響が出るかが数学的に分かるような、たちが良くて簡単な関数をウィンドウに使う訳です。
(5) 影響は次のように表れます。
w(t)とf(t)のフーリエ変換をW(s)、F(s)とすると、g(t)=f(t)w(t)のフーリエ変換は
G(s) = Indegral F(s-x)W(x) dx  (x=-∞~∞まで積分)
で与えられます。つまり、W(s)が「sの絶対値が大きくなるとW(s)は急激に0に近づく」という性質をもっていれば使い物になる。W(s)のグラフの幅が、周波数の分解能(0.1Hz刻みで分析できるか1Hz刻みかなど)を決めるわけです。
(6) また周波数分析だけでなく、もっと他の統計値を求めたりする目的で、時系列データf(t)にウインドウを掛けることもあります。
 例えば、現在をt=0として、過去の株価の変動f(t)を日々の変化を均して見たいというときに、もし単純な区間平均:例えば1箇月間の平均を使ったとすると、これは
w(t) = (-1箇月 < t < 0のとき1, その他では0)  (rectangularですね)
g(t) = f(t)w(t)
を作ってt=-∞~∞まで積分するのと同じです。このやり方では「ちょうど1箇月前に大暴落があった」という時点で平均値に急な変化が現れてしまいます。
 そこで、過去(t<0)にさかのぼるに従って次第に値が小さくなるウインドウ、例えば:
w(t) = (t<0ならexp(a t), その他では0)
を使い、g(t)=w(t)f(t) をt = -∞~∞まで積分すれば良いですね。

 そういう訳で、いろんな目的でいろんなウインドウが考えられるし、詳しく調べられているものには名前も付いているけれど、用途に合わせて自分で作るのが本来の在り方だと思います。

この回答への補足

お陰様で大まかに分かりました。ありがとうございます。
しかし、素人の私は、基本的なことで一つわからないところが有ります。もう一つ教えてきたいただきませんか?

・株価の変動を見たいという例ですが、「一ヶ月前におおきな変動があった時、算術平均であれば、結果に大きく響く、そこで、ウィンドウをかける、そうすれば・・・」というのはわかります。例えばゴルフの平均スコアで「たまたま一回だけ体調が悪くて不調で150たたいてしまった」という時に「ウインドウをかけると算術平均よりもその人の実力が表現しやすい」ということと同じなんでしょう?
しかし、株価の話で言うと、大きな変動が一ヶ月前でなく、2,3日前なら{例えばexp(at)}ウィンドウをかけてもその影響は大きいのでは?と思ってしまいます。また、ここ2,3日たまたま株価が下がってる場合にその日を中心としてウィンドウをかければ、おかしな結果になるわけでしょう?また、N個のサンプリング値がある時には、N個のデータを中心としてN個全てにウィンドウをかけて、それをそれぞれの時間ずらして足しあわせると過去の株価の変動がなだらかに表現できるのでしょうか?

補足日時:2000/12/13 09:34
    • good
    • 0

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