2017-07-26 7 views
0

MatlabでFFTを使用している私の信号のスペクトラムの計算に何かがありません。 私のコード:私は台無しにどこ私に教えてとMatlabでFFTを使用して信号のスペクトルを計算してプロットする

​​

あなたはとても親切だろうか?

Iはalgorythmは、同じ信号のこれら2つのサンプリング使用して動作するかどうかを確認しようとした(同一のサンプリング周波数を、二つの異なる時間範囲0~10および0-100上):

fs=1000; 
time10 = [0:1/fs:10]; 
time100 = [0:1/fs:100]; 
data10 = sin(2*pi*0.23 .*time10)+cos(2*pi*12 .*time10); 
data100 = sin(2*pi*0.23 .*time100)+cos(2*pi*12 .*time100); 

私は2つの推測スペクトルはsupperpose必要がありますが、ここで見られるように、彼らは...ない:https://www.dropbox.com/s/wfols9o409pr94u/FFT_spectrum_StackOverflow.png?dl=0 https://www.dropbox.com/s/a8vmzwto6x4130w/FFT_spectrum_StackOverflow.fig?dl=0

おかげ

+1

最初の例では、なぜこれが動作していないと思われるのか説明できます(ログエラーまたは写真を表示する)。 2番目の例では、両方のspctrumがまったく支配しないことを示す写真をアップロードすることができます。 –

+1

そして、第2の例では、両方のスペクトルが暗黙のうちに 'data'の両方で同じではないので、両方のスペクトルが支配的であってはなりません。 –

+1

このコードは、MathWorksが提供するものとほぼ同じです。私は、あなたが「びっくり」した場所は見ません。なぜこれが正しくないと思うか説明できますか? – rayryeng

答えて

2

良いニュースは、そのことによって、スペクトルのあなたの計算を間違っては何もないということですエルフ。

異なる長さのサンプルを見ると、2つの異なるサンプルを効果的に見ているという問題があります。 時間領域では、無限に長い正弦波と長さの異なる長方形の窓との乗算の結果として見ることができます。

周波数領域では、無限に長い連続時間の正弦波信号のスペクトルが、長方形の窓のスペクトルと畳み込まれます。異なる窓長では、それらの窓の対応するスペクトルは異なる幅(長い方形窓の場合は狭いスペクトル)を有する。その結果、無限に長い正弦波信号のスペクトルにおけるスパイクが、異なる帯域幅にわたって広がることになる。これはまさにあなたが見ているものです。

関連する問題