• ベストアンサー

振幅スペクトル、位相スペクトル→原信号の導出法

matlabにてある信号をfftした結果から振幅スペクトル、位相スペクトルをそれぞれ求めたのですが、その2つから元の信号を得る方法を教えてください。

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

  • ベストアンサー
  • m_takeda
  • ベストアンサー率100% (3/3)
回答No.2

複素スペクトルを振幅スペクトルと位相スペクトルに分離する方法を御存知なら その逆もできるはずなのですが… ヒント:複素数=振幅*exp(j*位相)

toyama_mms
質問者

お礼

回答ありがとうございます。 ヒントの通りにやりましたら、信号をfftしたものと同じ複素スペクトルができました! しかし、信号をfftしたものをifftすると元の信号を作れるのですが、もう片方は信号を作れませんでした。 同じ数値のものをifftしているのになぜできないのでしょうか;

toyama_mms
質問者

補足

解決しました! ありがとうございました。

その他の回答 (1)

  • m_takeda
  • ベストアンサー率100% (3/3)
回答No.1

複素スペクトル(ある信号をfftした結果)に戻してから 逆フーリエ変換(ifft)をすれば良いかと思います。

toyama_mms
質問者

お礼

回答ありがとうございます。 振幅スペクトル、位相スペクトルから複素スペクトルに戻す方法を教えていただけますか?

関連するQ&A

  • MATLABによるFFTと位相スペクトルについて

    純粋な正弦波信号 y=sin2πft ただし周波数f=500MHz をサンプリング周波数2.5GHz,サンプリング数128,256,512,1024の四パターンMATLABでFFTし、パワースペクトルと位相スペクトルを求めました。 結果、パワースペクトルは予想通り500MHzでピーク値をとったのですが、位相スペクトルは各サンプリング数ごとに全く違う値を取りました。 というわけで、 (1)理論上、正弦波の位相スペクトルはどのような値になるのか (2)なぜサンプリング数ごとに位相スペクトルの結果が大きく変わったのか この二点をご教授ください。よろしくおねがいします。

  • スペクトル

    これらが変化するのか,変化しないのか教えてください. 1.信号を整数倍した時の振幅スペクトル,位相スペクトル. 2.異なる2信号を足した時の振幅スペクトル,位相スペクトル. 3.信号を時間軸方向に移動したときの振幅スペクトル,位相スペクトル.

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

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの 振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(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をかける理由を)教えて頂けないでしょうか。

  • クロススペクトルを算出する方法

    クロススペクトルを計算して求める具体的な方法についてお尋ねします.2つの時系列があって,各周波数ごとのコヒーレンスとかフェイズを算出して周波数による変化を図示したようなものだと思います. 2つの量をいっぺんに処理するようなので複素数ということになると思いますが.実部,虚部をそれぞれコスペクトル,クオドラチャスペクトルなどと言っていたと思います. さて,そこで質問ですが,1つの時系列でスペクトルを算出するFFTプログラムがある場合,その結果を元にしてクロススペクトルを算出することは可能でしょうか.2つの時系列のそれぞれのスペクトル(振幅,位相)を個別に算出できるプログラムがあり,それらからクロススペクトルを求められないかということです.それともクロススペクトルを求めるルーチンは,2つの時系列を放りこんでそれ専用のFFTのルーチンを経て出力されるものなのでしょうか. スペクトルを求める方法は,FFT, 最大エントロピー,相関関数の変換などいろいろあると思います. FFTだけが手元にあります. よろしくお願いします.

  • 振幅スペクトルの導出

    s(t)=4πBsinc(2πBt)の振幅スペクトル|S(w)| を導出せよと言う問題です。 S(w)=∫s(t)exp(-jwt) dt (積分範囲はー∞から∞) この積分ができません。

  • 振幅スペクトル グラフ

    振幅スペクトルが X(Ω)={1, |Ω|<ΩB,0, |Ω|>=ΩB である連続信号x(t)を考える.連続時間信号に含まれる最大周波数が10kHzの時,(a)32kHz,(b)16kHzでサンプリングした際のグラフの描き方を教えてもらえませんか?範囲は-50kHz~50kHzです.ΩBは原信号の最大角周波数です.周波数領域での位相がゼロである信号を仮定する.

  • フーリエ変換 位相の範囲

    フーリエ変換の位相の範囲について質問です. ある信号をフーリエ変換すると 周波数スペクトルがわかります. 周波数スペクトルには振幅スペクトルと位相スペクトルがあって それぞれ 振幅スペクトル: Xn=√An^2+Bn^2 位相スペクトル:θn=arctanBn/An で表されることは理解できたのですが、 この場合、 θnがとる範囲は0~πですか? 考え方がよくわからないので説明も一緒にわかる方いらっしゃいましたら 教えてください. よろしくお願いいたします.

  • 標本化した信号の振幅スペクトル

    信号を標本化した上で、振幅スペクトルを図示する問題を考えています。 途中まで考えたものの、詰まってしまってお力を貸して頂けないでしょうか? 宜しくお願い致します。 (問題と考えた内容は以下の画像にまとめております) http://upup.bz/j/my17956WMkYt-Zo0Q9ZDIxM.jpg また、もしかしたら答案最後のf (nt) δ(t - nt) は不要かもしれません。

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

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

  • ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値に

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(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をかける理由を)教えて頂けないでしょうか。 当方、数学についてはあまり詳しくないため、簡単に説明して頂けると幸いです。