为什么改变采样频率时频谱会发生变化?

Why does the frequency spectra change when the sampling frequency is changed?

这里是我的代码,用于在时域中生成三角波形并生成其对应的傅里叶 series/transform(我不知道它是级数还是变换,因为 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');

这里是时域信号、幅度谱和相位谱的生成图。

link: fs = 330hz

我的问题是当我将采样频率(fs 当前等于 330 赫兹)更改为另一个值时,幅度和相位谱图发生变化。

这是采样频率等于 400 hz 时的幅度和相位谱图:

link: fs = 400 hz

你能解释一下为什么会这样吗?在给定任何采样频率的情况下,我该怎么做才能获得幅值和相位谱的常数图?

我无法让您的图片通过我的代理加载,但 FFT 的频谱在更高的采样率下会在中间有更大的 "gap"。采样的一个基本 属性 是它引入了原始光谱的副本;如果你研究过discrete-time Fourier transform,你可能已经知道了这一点。在更高的采样率下,这些副本之间的距离更远。

此外,您的采样点将以不同的采样率位于不同的位置,因此您可能会得到不同的波瓣行为。

顺便说一下,您在 Matlab 中进行了离散傅里叶变换——您给它的是离散点的有限序列,而不是连续的、无限长的信号。

如果您希望绘图看起来相同,只需使它们的 x 轴匹配即可。

因为DFT/FFT的频谱确实是原始模拟频谱的采样归一化版本,因此随着采样步长的变化,频域的采样步长也会发生变化,因此频谱线您看到的也发生了变化,因为原始光谱不是恒定的。另一个因素可能是混叠效应,因为三角波的模拟频谱在理论上是无限的。