0

これは、時間領域で三角波形を生成し、それに対応するフーリエ級数/変換を生成するための私のコードです(matlabにはフーリエ変換関数しかないため、その級数または変換かどうかはわかりませんが、信号は周期的であるため、参照は次のように述べています対応するフーリエはフーリエ級数と呼ばれる必要があります)。

x = 0;
s = 50; % number of sinusoidal components
fs = 330; % hertz
dt = 1/fs;  % differential time
t = [0:dt:4];  % seconds
const = 2 / (pi^2);

for k = 1:2:s,
   x = x + (((-1)^((k - 1) / 2)) / (k^2)) * sin(4*pi*k*t);
end

x = const * x;

% amplitude = max(x) = 0.2477
% period = 0.5 seconds

f = linspace(-fs/2,fs/2,length(x));
xk = fftshift(fft(x));
figure;

subplot(3,1,1);
plot(t,x);
grid on;
xlabel('time(seconds)');
title('Time Domain');

subplot(3,1,2);
plot(f,abs(xk));
grid on;
xlabel('frequency(hertz)');
title('Magnitude Spectrum');

subplot(3,1,3);
plot(f,angle(xk));
grid on;
xlabel('frequency(hertz)');
title('Phase Spectrum');

これは、時間領域信号、振幅スペクトル、および位相スペクトルに対して生成されたプロットです。

リンク: fs = 330hz

私の問題は、サンプリング周波数 (現在 330 Hz に等しい fs) を別の値に変更すると、振幅スペクトルと位相スペクトルのプロットが変化することです。

サンプリング周波数が 400 Hz に等しい場合の振幅スペクトルと位相スペクトルのプロットを次に示します。

リンク: fs = 400 Hz

なぜこれが起こるのか説明できますか?また、サンプリング周波数が与えられたときの振幅スペクトルと位相スペクトルの一定のプロットを取得するにはどうすればよいでしょうか?

4

2 に答える 2

2

あなたの写真を私のプロキシ経由でロードすることはできませんが、FFT のスペクトルは、サンプリング レートが高いほど中央に大きな「ギャップ」があります。サンプリングの基本的な特性は、元のスペクトルのコピーを導入することです。離散時間フーリエ変換を学んだことがあれば、これを学んだかもしれません。サンプリング レートが高くなると、これらのコピーはさらに離れます。

さらに、サンプリング ポイントは異なるサンプリング レートで異なる場所にあるため、異なるロビング動作が発生する可能性があります。

ちなみに、Matlab で離散フーリエ変換を取得しています。連続した無限に長い信号ではなく、離散点の有限シーケンスを与えています。

プロットを同じに見せたい場合は、x 軸を一致させます。

于 2015-06-05T00:55:44.840 に答える
0

これは、DFT/FFT によるスペクトルが実際には元のアナログ スペクトルのサンプリングされ正規化されたバージョンであるためです。したがって、サンプリング ステップが変化すると、周波数領域のサンプリング ステップも変化し、表示されるスペクトル線も変化します。元のスペクトルは一定ではありません。三角波のアナログ スペクトルは理論上無限であるため、もう 1 つの要因はエイリアシング効果である可能性があります。

于 2015-06-05T01:52:15.963 に答える