FFT和啁啾信号的概念问题

信息处理 fft 傅里叶变换 线性啁啾
2022-02-05 02:42:02

如果我对正弦曲线进行 FFT,我将得到一个图,其中所有信号的能量都集中在正弦曲线频率上。但是如果我有一个频率不断变化的信号会发生什么?(如啁啾声:线性和指数)

是否可以计算啁啾信号的 FFT?我应该期待什么结果?

我尝试在 Matlab 中使用 matlab 函数创建一个啁啾,然后将其传递给 FFT 函数,但我不知道这是否有意义以及如何“读取”我得到的结果。

你能不能给我推荐一些关于这个话题的读物(论文、书籍)?

3个回答

你的问题比你想象的要深。对于频谱随时间变化的信号,例如啁啾信号,您会在简单的傅里叶变换中丢失这种频谱变化信息。您必须查阅时频分析以保留时间变化和频谱变化的完整信息。

考虑使用 matlab 的“specgram()”函数计算和绘制信号的时频频谱图。

考虑 matlab 中的以下代码:

  t=[0 0.5 1.0 1.5 2.0]; % time breakpoints
  f=[0 200 100 150 300];  % instantaneous frequency breakpoints
  p=polyfit(t,f,4);      % fit 4th order polynomial over time
  t=0:0.001:2;           % 2 secs @ 1kHz sample rate
  y=chirp(t,p);
  figure,specgram(y,128,1E3,128,120); % 2D time-frequency display

相反,包含所有频率的完整信号的单个 FFT 会丢失它们的时间变化信息。

FFT是一种计算DFT的快速算法

所以它适用于有限长度的样本。这一事实对它将为信号生成的频谱有一些副作用,但通常它仅包含它包含在其长度为nfft的时间窗口中的信号频率。

当你在你的正弦曲线中扫描频率时,实际上你正在做某种频率调制。当你计算这个信号的FFT时。您会在计算FFT的窗口中看到正弦已调制到的所有频率的功率

考虑以下我在 Matlab 中编写的示例:

fs = 48e3;
t = 0:1/fs:20e-3;
x = sin(2.*pi.*(10e3 - (2e3 .*(abs(t-10e-3)/10e-3))).*t);

该信号将在 [0 , 10ms] 内从 8K 扫描到 10K 频率,在 [10ms, 20ms] 内从 10K 扫描到 8K 频率,并以 48KHz 频率进行采样。计算其FFT

L = length(x);
xf = fft(x)/L;
xf_s = fftshift(xf);
f = Fs/2 * linspace(-1,1-2/L,L);

然后您可以使用绘制其 DFT 频谱表示

plot(f,abs(xf_s));

和:

在此处输入图像描述

就像大多数调频信号一样。请注意,这里我们计算了全长信号的FFT ,如果我们只计算信号的某些部分,我们将获得该部分的频率功率。

如果您谈论的是拉普拉斯(或傅立叶)变换,那么任何具有时变系数的函数都具有有效的变换。但是您必须进行模拟/连续计算。我想除了混叠之外的 z 变换也是如此。这不是微不足道的。我的经验是,这个问题,啁啾,是小波分析中的一个标准例子。

一些互联网参考:

在一些细节: http: //perso.ens-lyon.fr/patrick.flandrin/SPIE01_PF.pdf

实际应用?:http ://www.phys.ufl.edu/ireu/IREU2014/pdf_reports/Eve_Report.pdf

如果您对分析线感兴趣,请尝试:@book{meyer1992wavelets, title={Wavelets and applications}, author={Meyer, Yves}, year={1992}, publisher={Paris [etc.]: Masson; 柏林 [等]: Springer-Verlag} }

相当过时但可以理解,因为它们仍处于论证阶段。第 1a 节。与短期傅立叶分析的比较是 1b。除了亚马逊列出的 83美元新品;看着我的副本,我支付了 7.50 美元。我真的不明白技术书籍的定价。