1

時系列分析にフーリエ変換を使用することの欠点を示すために、いくつかの図を生成したいと思います。私は、2つの明らかに非常に異なる信号が非常に類似した形状のスペクトルを持っていることを示すことを目指しています。まず、シリーズを作成します。

t =  0:.01:2;
y = sin(2.*pi.*5.*t)+sin(2.*pi.*10.*t);
r1 = find(t <= 1);
r2 = find(t > 1);
y2a =  sin(2.*pi.*5.*t(r1));
y2b = sin(2.*pi.*10.*t(r2));
y2 = [y2a,y2b];

figure(1);
subplot(211);
plot(t,y,'k');
subplot(212);
plot(t,y2,'k');

生産: ここに画像の説明を入力してください

ここで、それらのスペクトルが非常に類似した形状を持っていることを示したいと思います。 ここに画像の説明を入力してください

これらは、MATLABで再現したいいくつかのクラスノートからの例です。しかし、2番目のプロットを再現するのに苦労しています。提供された情報を使用して、MATLABで2番目のプロットを作成する方法を誰かが提案できますか?

4

1 に答える 1

2

それらのプロットを再現するのはかなり簡単です。ただし、いくつかの点に注意してください。

  1. クラスノートでは、時間領域のプロットはからt = 0までですt = 4t = 2あなたが行ったのとは異なります)。
  2. 周波数領域のプロットは、正の周波数、つまり周波数スペクトルの半分のみを示しています。周波数範囲は0〜20Hzで、サンプリング周波数は40Hzです。
  3. エネルギー量は同じでなければならないため、スペクトルの半分だけが表示される場合は、プロットされた周波数成分に2の係数を掛ける必要があります。

そうは言っても、完全なコードは次のとおりです(時間領域プロットの修正を含む)。

% # Time domain plots
fs = 40;
t = 0:(1 / fs):4;
y1 = sin(2 * pi * 5 * t)+ sin(2 * pi * 10 * t);
y2 = [sin(2 * pi * 5 * t(t <= 2)), sin(2 * pi * 10 * t(t > 2))];

figure
subplot(2, 1, 1), plot(t, y1)
subplot(2, 1, 2), plot(t, y2)

% # Frequency domain plots
Fy1 = abs(ifft(y1));
Fy2 = abs(ifft(y2));
N = numel(t);
idx = 1:numel(Fy1) / 2;    % # Indices of half the spectrum
f = fs * (0:(N - 1)) / N;  % # Actual frequencies

figure
subplot(2, 1, 1), plot(f(idx), 2 * Fy1(idx))
subplot(2, 1, 2), plot(f(idx), 2 * Fy2(idx))

時間領域プロットは次のとおりです。

ここに画像の説明を入力してください

対応する周波数領域プロットは次のとおりです。

ここに画像の説明を入力してください

于 2012-12-09T09:52:47.653 に答える