- 締切済み
MATLABによるFFTと位相スペクトルについて
純粋な正弦波信号 y=sin2πft ただし周波数f=500MHz をサンプリング周波数2.5GHz,サンプリング数128,256,512,1024の四パターンMATLABでFFTし、パワースペクトルと位相スペクトルを求めました。 結果、パワースペクトルは予想通り500MHzでピーク値をとったのですが、位相スペクトルは各サンプリング数ごとに全く違う値を取りました。 というわけで、 (1)理論上、正弦波の位相スペクトルはどのような値になるのか (2)なぜサンプリング数ごとに位相スペクトルの結果が大きく変わったのか この二点をご教授ください。よろしくおねがいします。
- naoki-tenor
- お礼率0% (0/1)
- 大学・短大
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ninoue
- ベストアンサー率52% (1288/2437)
サンプリング周波数と信号周波数の比が小さく、整数倍の関係になっている為に問題が発生しているのだと思われます。 サンプリング周波数が信号周波数よりもずっと高いと問題は少ないでしょう。 或いはその比が数倍程度でしたら、整数倍の関係に無い方がサンプル数の増大につれて位相も次第に正しい値に収斂していくのではないでしょうか。 理論上どうなるかは、理論通りプログラム上でftの周波数でy=sin2πftの関数を発生させ、その5倍の周波数でサンプルしてFFTを求める事しか思いつきません。 このサンプルの関係では、5点毎に1サイクルの信号のサンプリングが繰り返されるので、128,256,512,1024サンプルでは、最後に3,1,2,4サンプルの分が不完全周期分として残り、これが残留位相分として変換されて現れるのではないでしょうか。 (なお質問は数学カテゴリの方が適しています)
関連するQ&A
- matlabでのFFT
matlabで信号処理を学んでいます。現在はFFTを使って信号処理をしているのですが、パワースペクトルを見るとDC成分だけピークがたってしまう状態です。原因としては何が考えるのでしょう。 どなたかご教授願います。
- 締切済み
- その他(プログラミング・開発)
- 振幅スペクトル、位相スペクトル→原信号の導出法
matlabにてある信号をfftした結果から振幅スペクトル、位相スペクトルをそれぞれ求めたのですが、その2つから元の信号を得る方法を教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- MATLABによるFFT
MATLABのfft関数を使用して,フーリエ変換してPSDを算出すると,スペクトルの周波数領域での積分値が元データの二乗平均値と一致しないのですが,原因は何が考えられるでしょうか?FFTの出力がフーリエ係数であれば一致するはずなのですが.
- ベストアンサー
- 数学・算数
- FFT/スペクトルに関して
エクセルにてFFTを勉強しているのですが、FFT後に出てくる縦軸のスペクトルとは何でしょうか? 時間軸×音圧 ⇒ 周波数×音圧に変換したんですが、この縦軸は音圧ではなくスペクトルというものだと理解しています。このスペクトルが示すものは単にその周波数の成分が強い傾向にあるというのを示しているだけで、その周波数の音圧がいくらというのを示しているのではないのでしょうか? 現在、訳あってその周波数の絶対量を使用したいのですが、その数字に意味はないのか教えてください。
- ベストアンサー
- その他(品質管理)
- MATLABを用いたFFT
現在40kHzの正弦波をMATLABを用いてFFTをかけましたがしかし思った結果になりません。作成したmファイルの内容は以下のとおりです。 data = xlsread('test001.xls','Sheet1'); %excelファイルの読み込み data = data(:,2); %2列目を選択 Y = fft(data); %fft Pyy = Y.*conj(Y)/2500; %スペクトルを求める f = 40000 * (0:2499)/2500; %範囲を指定 plot(f,Pyy(1:2500)) %グラフを作成 本当に困っているので、解答お願いします。
- 締切済み
- その他(プログラミング・開発)
- パワースペクトルの0dBの値について
matlabを用いて時系列データのパワースペクトルを計算、対数表示でグラフにプロットしています。 matlabのfft関数のヘルプに記載されていた例を参考に、以下のような自作の関数を組んで計算しているのですが、2つ質問があります。 1. この場合、パワースペクトルの0dBは、時系列の値ではいくつになるのでしょうか? 0dB = 1でしょうか? 2. 関数の中において、power_fftをN_fft(高速フーリエ変換時のデータ長さ)で割っている事の理由がわからなかったのですが、なぜ行っているのでしょうか? ------------------------------------------------ 以下、自作のパワースペクトル表示関数を示します function Power_db(Data_xx) fs = 1000; % サンプリング周波数 [Hz] N_fft = 2^12; % 4096個 xx_fft = fft(Data_xx,N_fft); power_xx = xx_fft.* conj(xx_fft) / N_fft; frequency = fs*(0:2047)/N_fft; % (0:2047)で500Hzまで plot(frequency,20*log10(power_xx(1:2048))) xlabel('Frequency [Hz]'); ylabel('Power Spectrum [dB]'); grid on; --------------------------------------------------------- 以上です。 何か足らない情報などがありましたらお申し付けください。 よろしくお願い致します。
- ベストアンサー
- 物理学
- EXCELとMATLABのFFT計算結果の違い
はじめまして。 EXCELのフーリエ変換機能を使って計算したピーク周波数が、 MATLABのFFT関数から計算させたものとの結果より高くなってしましました。 ※0.0001秒刻み、振幅が4096行あるデータで約2.4Hz違いました。 違いの原因を調べたいのですが、どの様な事が考えられるでしょうか? よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- パワースペクトルのデシベル表示について
信号のパワースペクトルをFFTによって求め、それのデシベル値を横軸を周波数としてグラフで表示するとき、その上限が 0 dBになっているのを、様々な文献やサイトでよく見かけます。 パワースペクトルの値は 1 以上になることもありますので、そのデシベル値も 0 dB以上になると思うのですが、上記のような上限が 0 dBとして表示されている場合は、正規化などがされたパワースペクトルのデシベル値が表示されているのでしょうか? また、ある標本化関数のフーリエ変換を求め、その周波数特性の理論値をグラフとして表示するとき、周波数 0 のときで理論値が明らかに 1 ではないにも関わらず、そのデシベル表示が 0 dBから始まっているのを、様々な文献で見かけるのですが、それも正規化などがされた理論値が表示されているのでしょうか? 初歩的な質問かもしれませんが、よろしくお願いします。
- ベストアンサー
- 物理学