我有一个以 100 MS/sec 采样的频率为 10 MHz 的信号。当我的信号在 rawData 中(这个 rawData 的长度是 100000)时,如何在 matlab 中根据频率计算 FFT,还有
- NFFT 的最佳长度应该是多少(即,NFFT 取决于什么因素)
- 为什么我的振幅(Y 轴)随 NFFT 变化
- NFFT、N 和 L 之间有什么区别。如何计算信号的长度
- 如何从单个信号(在原始数据中)中分离噪声和信号
这是我的代码,
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]);
最佳答案
您可以在 another post 中找到相应的频率, 我只回答你的其他问题:
在大多数情况下,包含您的所有数据是最佳选择。
fft
只是将您的输入数据截断为请求的长度,这可能不是您想要的。如果您知道输入单曲的周期,则可以将其截断以包含整数个周期。如果您不知道,窗口(例如 Hanning)可能会很有趣。如果您更改
NFFT
,您会在 fft 计算中使用更多数据,这可能会稍微改变给定频率的振幅。您还可以计算0
和Fs/2
(采样频率的一半)之间更多频率的振幅。问题不清楚,请给出
N
和L
的定义。这取决于您的应用。如果噪声与信号频率相同,则无法将其分离。否则,您可以使用滤波器(例如带通)来提取感兴趣的频率。
关于c++ - 当信号在 Matlab 中的原始数据中时计算频率轴上的 FFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43679069/