MATLAB fft:用于大信号

MATLAB fft: for a large signal

我有一个包含 300000 个条目的信号向量。在循环的每次迭代中,我需要从信号向量中提取 2000 个连续值,将其存储在 X 向量中,计算它的 FFT 并在这 2000 个 X 值中找到最大频率分量。在下一次迭代中,来自 2001 年的值从信号向量中提取到 4000,并执行类似的操作。在每次迭代中,我需要知道最大频率。 关于如何去做有什么建议吗?

T=300; %acquisition time

fs=1000; %sampling rate;

t= 0:1/fs:(T-1/fs);    % 300 second @ 1kHz sample rate
fo=1;
f1=500;   
y=chirp(t,fo,T,f1); % 300000 samples, instead of your samples

nfft=2000; % sample number for fft
a=spectrogram(y,nfft,0,nfft,fs); % put your samples in y position

df=fs/nfft; % frequency resolution.. Change this as your resolution

[val ind]=max(a);

freq=df*(ind-1)

您可以使用频谱图轻松获得每个 fft 的最大频率。