使用 FFT 校正频率轴
Correct frequency axis using FFT
如何使用 MATLAB
的 FFT 获得正确的频率向量进行绘图?
我的问题:
N = 64;
n = 0:N-1;
phi1 = 2*(rand-0.5)*pi;
omega1 = pi/6;
phi2 = 2*(rand-0.5)*pi;
omega2 = 5*pi/6;
w = randn(1,N); % noise
x = 2*exp(1i*(n*omega1+phi1))+4*sin(n*omega2+phi2);
h = rectwin(N).';
x = x.*h;
X = abs(fft(x));
通常我会这样做:
f = f = Fs/Nsamples*(0:Nsamples/2-1); % Prepare freq data for plot
问题是这次我没有Fs(采样频率)。
在这种情况下我怎样才能正确地做到这一点?
如果您没有 Fs,只需将其设置为 1(如每个样本一个样本)。这是我一直使用并看到其他人使用的典型解决方案。您的频率 运行 从 0 到 1(或 -0.5 到 0.5),没有单位。这会被大家认出来是"periods per sample".
的意思
编辑
从您的评论中我得出结论,您对径向频率感兴趣。在这种情况下,您想将绘图 x 轴设置为
omega = 2*pi*f;
如何使用 MATLAB
的 FFT 获得正确的频率向量进行绘图?
我的问题:
N = 64;
n = 0:N-1;
phi1 = 2*(rand-0.5)*pi;
omega1 = pi/6;
phi2 = 2*(rand-0.5)*pi;
omega2 = 5*pi/6;
w = randn(1,N); % noise
x = 2*exp(1i*(n*omega1+phi1))+4*sin(n*omega2+phi2);
h = rectwin(N).';
x = x.*h;
X = abs(fft(x));
通常我会这样做:
f = f = Fs/Nsamples*(0:Nsamples/2-1); % Prepare freq data for plot
问题是这次我没有Fs(采样频率)。
在这种情况下我怎样才能正确地做到这一点?
如果您没有 Fs,只需将其设置为 1(如每个样本一个样本)。这是我一直使用并看到其他人使用的典型解决方案。您的频率 运行 从 0 到 1(或 -0.5 到 0.5),没有单位。这会被大家认出来是"periods per sample".
的意思编辑
从您的评论中我得出结论,您对径向频率感兴趣。在这种情况下,您想将绘图 x 轴设置为
omega = 2*pi*f;