【问题标题】:Compute FFT in frequency axis when signal is in rawData in Matlab当信号在 Matlab 中的 rawData 中时,在频率轴上计算 FFT
【发布时间】:2017-04-28 11:24:28
【问题描述】:

我有一个频率为 10 MHz 的信号以 100 MS/秒的速度采样。当我的信号在 rawData(这个 rawData 的长度是 100000)时,如何在 matlab 中根据频率计算 FFT,也是

  1. NFFT 的最佳长度应该是多少。(即,NFFT 取决于什么因素)
  2. 为什么我的幅度(Y 轴)会随 NFFT 变化
  3. NFFT、N 和 L 之间有什么区别。如何计算信号的长度
  4. 如何从单个信号(在 rawData 中)中分离噪声和信号

这是我的代码,

t=(1:40);
f=10e6;
fs=100e6;

NFFT=1024;

y=abs(rawData(:1000,2));
X=abs(fft(y,NFFT));
f=[-fs/2:fs/NFFT:(fs/2-fs/NFFT)];

subplot(1,1,1);
semilogy(f(513:1024),X(513:1024));
axis([0 10e6 0 10]);

【问题讨论】:

  • This post 可能是相关的。另请参阅重复问题的答案。
  • 你对NL的定义是什么?

标签: c++ matlab signal-processing fft ifft


【解决方案1】:

你可以在another post找到对应的频率,我只回答你的其他问题:

  1. 在大多数情况下,包含所有数据是最佳选择。 fft 只是将您的输入数据截断为请求的长度,这可能不是您想要的。如果您知道输入单个的周期,则可以截断它以包含整数个周期。如果您不知道,窗口(例如 Hanning)可能会很有趣。

  2. 如果您更改 NFFT,您会在 fft 计算中使用更多数据,这可能会稍微改变给定频率的幅度。您还可以计算0Fs/2 之间更多频率的幅度(采样频率的一半)。

  3. 问题不清楚,请提供NL的定义。

  4. 这取决于您的应用程序。如果噪声与您的信号频率相同,则您无法将其分离。否则,您可以使用滤波器(例如带通)来提取感兴趣的频率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2017-10-25
    • 1970-01-01
    • 2017-12-15
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多