【问题标题】:Correct frequency axis using FFT使用 FFT 校正频率轴
【发布时间】:2018-01-22 00:12:18
【问题描述】:

如何使用MATLABFFT 获得正确的频率向量?

我的问题:

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。
  • 本例中的长度为 64 个样本。我能做什么?
  • 我的问题是以时间度量(秒或分钟等)为目标的信号长度。
  • @Irreducible 不幸的是,信号不是真的,我在 MATLAB 中创建,x。我没有它的持续时间。无论如何,谢谢,它已经在工作了。

标签: matlab signal-processing fft


【解决方案1】:

如果您没有 Fs,只需将其设置为 1(每个样本一个样本)。这是我一直使用并看到其他人使用的典型解决方案。您的频率将从 0 到 1(或 -0.5 到 0.5),没有单位。这将被每个人识别为“每个样本的周期”。

编辑

根据您的评论,我得出结论,您对径向频率感兴趣。在这种情况下,您希望将绘图 x 轴设置为

omega = 2*pi*f;

【讨论】:

  • 我的情况是,我认为有 3 个频率,一个来自复数 exp,两个来自正弦函数。我怎样才能使频率轴匹配那些?
  • @Dirac 如果您有兴趣匹配您的omega1omega2,请使用径向频率。请参阅我编辑的答案。
  • 非常感谢您的回答。它现在正在工作。
  • @Cris Luengo 我发布了一个非常相似的问题here,但它是二维图像。在那种情况下,采样率 1 仍然有效吗?但是许多期刊使用的范围要大几百(就像我附加的 PDF 文件中的那个),实际上是什么定义了我在图像中的采样率?
  • @GregorIsack 基本上频率轴是这样完成的,f = (-nfft/2:nfft/2-1)*Fs/(nfft),其中nfft 是执行FFT 的点数,Fs 是频率样本。如果你只想要积极的一面,f = (0: nfft-1)*Fs/nfft
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 2022-11-07
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多