我有一个频率为10 MHz的信号,以100 MS / sec的速率采样。当我的信号在rawData中时,如何在matlab中计算FFT的频率(此rawData的长度为100000),
这是我的代码,
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]);
答案 0 :(得分:1)
您可以在another post找到相应的频率,我将回答您的其他问题:
包括所有数据在内的大部分时间都是最佳选择。 fft
只是将输入数据截断为请求的长度,这可能不是您想要的。如果您知道单个输入的周期,则可以将其截断以包含整数个周期。如果你不知道,一个窗口(例如汉宁)可能会很有趣。
如果更改NFFT
,则在fft计算中使用更多数据,这可能会略微改变给定频率的幅度。您还可以计算0
和Fs/2
之间更多频率的幅度(采样频率的一半)。
问题不明确,请提供N
和L
的定义。
这取决于您的申请。如果噪音与您的信号频率相同,则无法将其分开。否则,您可以使用过滤器(例如带通)来提取感兴趣的频率。