離散扁長回転楕円体列(dpss)とは?

このQ&Aのポイント
  • データテーパリングウィンドとは、スペクトル漏れを減少させるために使用されるものです。
  • dpssは離散扁長回転楕円体列の略で、時間周波数解析においてデータテーパリングを行う手法です。
  • dpssを使用することで、hanningと比べてより正確で高い分解能の時間周波数解析が可能になります。
回答を見る
  • ベストアンサー

離散扁長回転楕円体列(dpss)

信号処理の素人です。 あるプログラムを使って、時間周波数解析(FFT)を行おうとしております。 マルチテーパという手法の中で、データテーパリングウィンドの設定指定を求められます。このプログラムでは、古典的な「hanning」というものを設定できるものの、デフォルトは、「離散扁長回転楕円体列(dpss)」となっています。dpssについて調べましたが、私のような素人にも理解出来る情報がなく、matlab等の関数に関する説明等もあまりに専門過ぎてよく分かりません。 (1)「データテーパリングウィンド」が必要な理由、すなわち「スペクトル漏れを減少させる」という使用目的の意味が十分につかめません。 (2)dpssの基本的な考え方とはどのようなものでしょうか? (3)hanningとの違い、つまり、hanningの代わりにdpssを使うとどのようなメリットがあるのか? 以上、3点につきまして、ご教示いただけないでしょうか? できれば、数式をなるべく使わずに、概念的にご説明いただけますと、「ユーザー」としての質問者には大変たすかります。

質問者が選んだベストアンサー

  • ベストアンサー
  • veryyoung
  • ベストアンサー率75% (65/86)
回答No.2

マルチテーパなる手法、ネット検索斜め読みですが、以下推察、一助となれば幸いです。 本題の前に、添付図1のような通常のウィンドウ(窓関数)の役割についての理解が必要です。離散型フーリエ変換はフーリエ変換というよりフーリエ級数に類似のものです。従ってデータの時間長が信号周期の整数倍でない場合、サイドローブが発生してしまいます。スペクトル漏れです。 https://www.onosokki.co.jp/HP-WK/c_support/newreport/analyzer/FFT4/fft_11.htm http://ja.wikipedia.org/wiki/%E7%AA%93%E9%96%A2%E6%95%B0 各窓関数のフーリエ変換である黄色の図形が信号スペクトルに畳みこまれる事になります。対象が単一スペクトルであっても、そのような拡がりを見せるという事です。 さて、本題のマルチテーパに関してです(浅い理解での推察)。対象となる信号がノイズで汚染されているとしましょう。それがたまたま窓関数(テーパ)の山の部分にあり、両すそはクリーンだったと想定すると残念ですよね。両すその寄与が一様にあれば、ノイズスペクトルが薄まる筈だからです。ところで全データ時間長と周波数分解能は反比例します。もし周波数分解能が有り余っているなら、例えば添付図2のように4セグメント化し、それらのパワースペクトルの平均を取れば、ノイズ軽減が期待できそうです。あるいは、図3のようにセグメントはオーバーラップさせた方が得かもしれません。しかし、セグメント化は必須でしょうか。図4のような窓関数1,2,3をそれぞれ全データ時間長に適用、それらスペクトルを平均すれば、同様な効果があるらしいのです。これがDPSSのようです。 マルチテーパにおけるhanning選択肢は、おそらく図3の形かと想像します。オーバーラップは各セグメントのノイズスペクトルの独立性を損ないます。それに対するDPSSのメリットは、各窓の直交性により各ノイズ成分の独立性が担保される事でしょう。スペクトルを平均した際のノイズ軽減効果は、後者の方が、より勝ると言うロジックになりませんか。 誤りもあると思います。不審な点はご指摘ください。 ご参考 http://en.wikipedia.org/wiki/Multitaper http://d.hatena.ne.jp/kochory/20090212/1234460245 https://www.hulinks.co.jp/support/flexpro/v7/dataanalysis_mtaper.html

Shibainuote
質問者

お礼

veryyoungさん、手書きの図を入れて頂いて、大変分かり易いご説明でした。スペクトル漏れの考え方から、マルチテーパの意義、さらにDPSSのメリットも概念的に理解することができました。特に最後の段落のご説明は、感謝です。

その他の回答 (1)

  • DCI4
  • ベストアンサー率29% (448/1540)
回答No.1

データテーパリングウィンドなどについて 信号処理の素人です 私も信号処理の素人です 窓関数の 研究者 専門家ではないです 利用者である 測定機器に窓関はついてますし デジタルフィルタの設計 その他  FFTする時には使いました・・・・・その程度は常識範囲です 窓はその目的(自分の目的)に最適なものが開発され  ソフトなどに あらかじめ くっいている 足りない場合は自分で作成 追加する 暇だと ときおり測定用の窓を見ます・・・いいのが出てるかもしれないのでね http://en.wikipedia.org/wiki/Window_function#Windowing 以上の範疇で回答します ざっくり言えば 窓関数はその関数のフーリエ変換後の 周波数軸のグラフをみると性質が大枠つかめる 気になる奴は使用実験してみる DPSS(離散扁長回転楕円体配列) マットラブ シムリンク  窓関数をみると以下だった 窓関数として登録されてるね (1)「データテーパリングウィンド」が必要な理由、すなわち「スペクトル漏れを減少させる」という使用目的の意味が十分につかめません。 データテーパリングウィンド https://www.hulinks.co.jp/support/flexpro/v7/dataanalysis_fs.html この言葉は使ったことがない テーパリング  先細りになって消滅する 減衰スロープのことだろう  FRB金融緩和にも使われる じょじょに減らすスロープのこと 電気工学系では たんなる  『時間窓をかける』と言う 窓関数は矩形以外普通スロープである 基本は t軸で窓をかける(かけ算) ⇔ ω軸でフィルタをかける(畳み込み) t軸でフィルタをかける(畳み込み) ⇔ ω軸で窓をかける(かけ算) FFT は離散型フーリエ変換 (DFT) を実行する 高速化アルゴリズムで有限データー列 2^N として取り込み行うものです 時間軸での周期的なデーターから 周波数軸の 周期的なデーターへの変換する 無理やりそうする 打ち切りしてしまうわけ 無限につづく波形をちょん切る 不連続点が出るので 階段状になり 高周波を含んでしまう たとえばステップ関数は エッジのとこで 無限に高い周波数を含んでしまう 分析される信号に含まれる メインの周波数信号(正弦波)以外の信号がでてしまう ちょん切るタイミングで つねに波形が変わってしまうので測定意味を持たない 取り込みを何回もやって平均化すればそれなりに正しくなる 確率的にランダムになるから よって窓関数を取り込み時間信号にかける(切り出すということ)行うと精度は向上する メインローブのみ取り出せる可能性が高まる ちかごろは説明が親切 わかりやすい説明はここ↓東北大学 http://www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/win.html 打ち切りを軽減するわけ (2)dpssの基本的な考え方とはどのようなものでしょうか? DPSS(離散扁長回転楕円体配列) メインローブのエネルギー濃度を最大化するために使用される それを目的に開発された窓らしい アルファーα を調節して使用 (3)hanningとの違い、つまり、hanningの代わりにdpssを使うとどのようなメリットがあるのか? DPSS(離散扁長回転楕円体配列) またはスレピアンウィンドウが メインローブのエネルギー濃度を最大化するために使用される それを目的に開発された窓である はじめに出た hanningはそのような窓ではない古典的性能 今は目的別に窓がいっぱい開発され出てきたわけ hanningは使わない 私も目的に 違う窓を使う ※注意 私は マルチテーパという手法は利用しない パワースペクトル密度を求めることはしてない 貴君は地震研究かなにかですかね?エネルギーの抽出分析ですかね ざっと見たら以上でした 貴君の希望どうり いっさい数式はつかわなかった 数式はQ&A コーナーには書きにくいしね

Shibainuote
質問者

お礼

早速のご回答ありがとうございます。領域毎に異なる用語も、素人の私にとっては混乱の要因のようです。URLも含めまして、詳細な情報をご提供いただきましてありがとうございました。私は、主に生体信号を扱っております。

関連するQ&A

  • FFTスペクトルって何ですか

    FFTAnalyzerについて質問いたします。これは、「音声、振動など様々な波形をFFTスペクトルによって解析するプログラム」ということですが、「FFTスペクトル」とは何でしょうか。素人にも分かるように説明をお願いできないでしょうか。横軸の時間経過、縦軸は何を表しているのでしょうか。無理を承知でお願いいたします。

  • 高次フーリエ変換のプログラム

    お尋ねします。 1次元のデータ(例えば時系列)をフーリエ変換して周波数による系列に置き換えるプログラム(その逆も)は良く見かけます。FFTなどですね。周波数空間と時間空間の行き来に対応します。 一方、2次元、3次元に対応した高次フーリエ変換のプログラムがダウンロードできないでしょうか。3次元ということは空間ということになり、波数空間と実空間の行き来を可能にするものです。高次のFFTとなるでしょうか。入力としては3次元の空間離散化されたデータA(x,y,z)で、変換されるとA(k1,k2,k3)(離散化)のデータです。その逆もあり、というものです。 スペクトル法などによる数値計算を考えていますが、変換の部分は出来合いのものを使いたいと思っています。よろしくお願いします。

  • デジタル信号処理のフーリエ変換で

    matlabで勉強中なんですが、以下の操作をするとどうなるのか教えて頂きたいです。 (音声信号xにfftをかけて、フーリエ係数Xを求めてあるとします。) ・xを一定間隔で間引いた(3点中2点を0で埋めていく)場合、fftをかけるとフーリエ係数はどうなるのか? ・同様にXを間引いてifftをかけたら、復元された信号はどうなるのか? (間引く: □□□□□□□□□□□□… → □00□00□00□00□… ) 要するに、 時間領域で時系列の間引きを行うと周波数領域ではどんな影響がでるのか? 周波数領域でスペクトルを間引くと時間領域でどんな影響がでるのか? ということを知りたいのです。 実際にやってみたのですが、結果がどういう意味なのかイマイチわからず悩んでいます。 前者は、周波数領域で振幅を調べたら、1/3の長さのスペクトルが3つ並んでいました。 後者は、時間領域で複数(この場合3つかな?)の音が重なった感じになっていて、波形は元の信号とだいぶ異なっていました。 わかりやすく説明してもらえると助かります。よろしくお願いします。

  • スペクトルをグラフに表示したい

    スペクトルデータをグラフに表示するプログラムを作ることになりました。 言語はVBです。 データは機械から電圧信号を取り込みます。 と言っても、実際は機械に付属しているソフトのAPIで取り込むのですが。 APIは、例えば1Vの電圧が機械に向かって流れたら、1Vが返ってくるような仕様になっています。 グラフはリアルタイムに表示する必要があります。 X軸が周波数、Y軸がスペクトルです。 スペクトルを求めるにはFFTをする必要があるので、取り込んだ電圧をそのままグラフに表示し続けるような単純な仕組みにはならないと思いますが、実際どう作ったらよいかわかりません。 私がイメージしている仕組みは以下のとおりなのですが、正しいでしょうか? (1) 電圧信号をフレームサイズ(FFTする件数)分取り込む。 (2) (1)のデータをFFTする (3) (2)の結果からスペクトルデータを求める (4) (3)のデータをグラフに表示する。 グラフの点数(座標の数)は、フレームサイズの1/2。 X軸の座標は周波数分解能ごとにプロット。 (1)~(4)を繰り返す。 (1)~(4)の処理にも少なからず時間がかかるのですが、はたしてリアルタイム表示は可能なんでしょうか? ちなみに、プログラムにはフレームサイズ(FFTする件数)と周波数レンジを設定できる機能も実装します。

  • 複素数と実数が混在するように見える式について

    時系列解析で、自己相関係数のフーリエ変換がパワースペクトルになるというウィナーキンチンの関係というものがあります。その式では複素数が含まれているので、実数を入力として複素数が含まれている式で計算された出力結果は普通は複素数ということになります。しかし、自己相関係数は実数の系列で、パワースペクトルも実数になると思います(実部と虚部の2乗和なので)。実数に複素数を絡ませて変換して出てきたものが実数になるということになってしまいます。ここが理解できないのですが、どのように考えていくのでしょうか。絶対に虚部がゼロになるから、ということなのでしょうか。 一般にFFTによるスペクトル変換では実数列は複素数の実部にあてて変換する(例えば虚部はゼロにしておくとか)ので複素数から複素数を入出力するということで理解できます。 実際にプログラムでの処理を考えているので概念的な説明だけでは実装することできません。 なお、私は常に標準的なFFTでフーリエ変換しているので複素数での入出力ということなので実数となる系列では先に進めないという感じなのですが。もし出力が実数ということになったとき実部がそれ、虚部がそれ、実部と虚部の2乗和がそれ、というのならわかるのですが。 よろしくお願いします。

  • 周波数スペクトルについて

    はじめまして。まったく素養がないので、幼稚な質問かも知れませんが、、。 私が(例えば)10秒間、本を読んだ音声を、周波数スペクトルとして保存する事は、理論的には可能である、というような話をある人から聞きました。たとえば音声波形などの図は時間軸がとってあり、なにかの量の変化と時間との関係なのだな、とわかります。しかし、周波数スペクトルには時間軸がありません。10秒、という時間はどこに含まれてしまうんでしょうか? 変な質問で恐縮ですが、できれば中学生にもわかるくらいの御説明をいただけると助かります。数式、専門用語わかりませんので、概念、イメージ的な話で結構です。。宜しくお願いいたしますm(_ _)m

  • 回転楕円体の方程式

    回転楕円体の方程式を算出しようとしています. 3次元空間上において,ある2点,F(a1,b1,c2),F'(a2,b2,c2)を考えます. この2点からの距離の合計が等しい点を,P(x,y,z),FP+F'P=L1とします. この場合,F,F'の中点(a3, b3,c3)を中心とした回転楕円体となり,以下の式になるかと思います. (x-a3)^2/A^2+(y-b3)^2/B^2+(z-c3)^2/C^2=1 ここで,B=Cで,短軸と考えた場合,2A=L1より,A=L1/2. 中心から,FまでのよりをL2とした場合,3平方の定理より,B=sqrt(A^2-L^2). となるかと思うのですが,あっているでしょうか? 手元の幾何学の成書がなく,ご指導頂けると助かります.

  • 楕円の回転体の体積について

    楕円 m x^2 + n y^2 = A をX軸のまわりに回転させて得られる回転体の体積を求めたいのですが、どうすればいいのでしょうか? 助言おねがいします。

  • 1/fゆらぎの傾きについて

    私は今音の1/f ゆらぎについて研究していています。 まず傾きが既知のホワイトノイズ(傾き0)やピンクノイズ(傾き-1)、ブラウンノイズ(傾き-2)の音をMATLABで高速フーリエ変換を行ってスペクトル解析を行って周波数ごとのパワーを算出してエクセルで両対数をとって直線近似をしています。 結果、ホワイトノイズは0と正しいのですが、ピンクノイズは傾き-0.48、ブラウンノイズは傾き-0.98と約1/2の値となってしまいます。 強度はMATLABで算出された強度Pそのままを使っているのですが、文献などを見ると、dBの値で強度が表されいるので、そこに原因があるかと思うのですが・・・ 何かわかる方がいらっしゃればよろしくお願いいたします。 以下プログラム↓ [y,Fs]=wavread('pinknoize.wav'); y1 = y(:,1); Y = fft(y1,Fs/10); Y2 = abs(fftshift(Y)); Y3 = Y2(length(Y2)/2+1:length(Y2)); l = linspace(0,Fs/2,length(Y3));

  • FFTアナライザーの画面の見方について

    FFTアナライザーの波形画面を見ると縦軸がdBに表示になっていて,中心にinfとあり,上に行くと0,20,40…とあります。下に行くと0,-20,-40とあります。また,横軸が周波数で縦軸がdB表示の画面(パワースペクトルというのでしょうか)を見ると,縦軸が下より上へ0,-80,-60。-40…とあります。縦軸はdB表示ですから音の強さを表しているのでしょうが,数値にマイナス(-)がついているのはどんな意味なのでしょうか。例えば,あるホワイトノイズを作成するソフトで「-20dB」という数値を設定するというのはどんな強さを示しているのでしょうか。当方は音響の素人です。聾学校の職員ですが,理由あって難聴の聞こえのシュミレーション音源などを作成しております。分かりやすい説明を期待しております。よろしくお願いいたします。