我有一个从0.20毫秒到0.40毫秒的音调猝发信号。从0到0.20ms,从0.40ms到3.27ms,它为零。我做了fft,它显示了大约25 kHz的频率内容。 fft点的数量是32768,这也是时域信号的长度。
我正在尝试使用以下代码段在Matlab中绘制频谱图
nfft = 32768;
dT = 1e-6;
fs = 1/dT;
window = hamming(nfft)
spectrogram(signal,window,[],nfft,fs)
使用此方法我可以获得准确的频率描述,但是时间轴是个问题。
时域信号放大:
25 kHz时的频谱图:
答案 0 :(得分:3)
您无法获得时域和频域中准确的表示两者。这是傅立叶变换的uncertainty principle。
您可以执行的操作是通过更改窗口长度来权衡时间和频率分辨率。比较下面两个以不同窗口长度获得的频谱图。信号(图1)与您所提问题类似。
% Define signal
fs = 500; % sampling frequency
t = 0:1/fs:6; % time axis
fm = 10; % signal (carrier) frequency
s = cos(2*pi*fm*t).* exp(-5*(t-2).^2);
figure
plot(t,s)
% Spectrogram with long window
figure
nfft = 500;
window = hamming(nfft);
spectrogram(s,window,[],nfft,fs), view([90 -90])
% Spectrogram with short window
figure
nfft = 50;
window = hamming(nfft);
spectrogram(s,window,[],nfft,fs), view([90 -90])