史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

正弦曲线和FFT频率垃圾箱

内容

注意:我真的不希望写FFT连续两周。但这里准备好了,我们走吧!

我的朋友乔走进我的办公室,宣布,“史蒂夫,我有一个问题关于FFT。”

(乔是我的一个MathWorks本月21年前面试官。对我来说他的问题是,“所以你带的聚会吗?”I don't remember how I answered.)

乔是一个最大的MATLAB实验我知道。他总是试图利用MATLAB对一些新型的分析或自动化可疑的东西(比如改变色调的灯光在他家里。嗯。)

无论如何,最近他一直到自动分析的音乐。和他有烦心事。如果你有一个纯正弦信号的FFT,为什么它在频域展开呢?你怎么解释的输出fft当频率之间的两个相邻频率FFT的垃圾箱吗?和是,情况完全不同,当正弦信号的频率是一个FFT本频率?

哦男孩。我告诉乔,“好了,你真的没有一个正弦信号。一个正弦信号是一个无限长的信号。你有一个有限的正弦信号的一部分,我认为这是一个矩形的窗口的正弦信号。走开,让我更多地思考如何解释这一切,然后我明天来找你。”

因为我的背景在数字信号处理中,我倾向于认为这三种傅里叶变换之间的关系:

  • 傅里叶变换(连续时间-频率连续)
  • 离散时间傅里叶变换(DTFT)(离散时间-连续频率
  • 离散傅里叶变换(DFT)(离散时间-离散频率)

我之前有写过(11月23 - - 2009对各种各样的傅里叶变换)。这是最后一个,由MATLAB计算DFT,fft函数。

很难说到底从哪里开始在任何讨论傅里叶变换性质,因为使用术语和数学convensions如此广泛的变化。让我投入进去,穿过乔的例子。如果你有什么问题,请发布评论。

注意:接下来,我犯了一个很大的简化假设。具体来说,假设我们的采样频率足够高能够折扣的可能性在正弦信号的采样混叠。这不是一个完全有效的假设,因为不像一个真正的正弦信号,截断或窗口的正弦信号没有有限的带宽。

这里是一些样本参数,乔给了我。

在赫兹正弦信号频率:

f0 = 307;

在赫兹采样频率:

Fs = 44100;

采样时间:

Ts = 1 / f;

多少样品的正弦信号呢?从理论的角度来看,认为这是一个矩形窗口的长度,增加我们的无限长正弦信号序列。

M = 1500;

构建信号

n = 0: (m - 1);y = cos(2 *π* f0 * t * n);

计算点离散傅里叶变换(DFT)的f。这就是函数fft计算。

Y = fft (Y);

DFT的阴谋。DFT本身没有物理频率相关联的单位,但我们可以绘制在赫兹频率范围内将我们的知识的采样率。(我策划的DFT断开点强调其离散频率特性。我也会策划大小的傅里叶变换。)

f = (0: (M - 1)) * Fs / M;情节(f、abs (Y),‘*’)xlim ([0 f / 2])标题(DFT的大小)包含(的频率(赫兹))

探索周围的“传播”

在峰值放大。

p = 2 * Fs / (M + 1);f1 = f0 - 10 * p;f2 = f0 + 10 * p;xlim ([f1 f2))

与周围的“传播”高峰是什么?传播是由于我们没有纯正弦信号。我们只有一个有限的纯正弦信号的一部分。

进一步探讨它,让我们与DFT的有些人可能会称之为“真正的”我们窗口的正弦信号的傅里叶变换。如果我们可以折扣混叠,离散时间傅里叶变换(DTFT)是一样的“真实”傅里叶变换采样频率的一半。,只有一个非零信号的间隔0 < = n < n,一个点DFT DTFT的确切样品只要M > = n的DTFT N-point视窗化sinuoid的形式一堆美元罪恶的副本(\ω(n + 1) / 2) /美元罪(ω\ / 2),副本在哪里间隔采样频率的倍数。

我们可以得到一个更好的主意DTFT的真实形状吗?是的,通过补零DFT的输入。这个抽样DTFT更密切的影响。我们可以使用这种关系的一个很好的近似DTFT然后重叠DFT(的输出fft)。

M10 =长度(y) * 10;日元= fft (y, M10);f10 = (0: (M10-1)) * Fs / M10;情节(f10、abs(日元));持有情节(f、abs (Y),‘*’)举行xlim ([f1 f2)传说({“DTFT”,“DFT”})包含(的频率(赫兹))

将正弦信号频率移动到行了一个垃圾箱

DFT样品的傅里叶变换的间距Fs / M。让我们选择一个频率完全在一本。

f0 = 294;w0 = 2 *π* f0 / Fs;n = 0: (m - 1);y = cos (w0 * n);Y = fft (Y);p = 2 * Fs / (M + 1);f1 = f0 - 10 * p;f2 = f0 + 10 * p;情节(f、abs (Y),‘*’)xlim ([f1 f2])标题(“DFT”)包含(的频率(赫兹))

DFT(输出的样本fft)出现上面是完美的。它只有一个非零值的正弦信号的频率。

但完美的外表只是一种错觉。你可以看到到底发生了什么通过叠加DFT DTFT的样品,我们之前计算用零填充的诀窍。

日元= fft (y, M10);情节(f10、abs(日元));持有情节(f、abs (Y),‘*’)举行xlim ([f1 f2)标题(“DTFT DFT叠加的)包含(的频率(赫兹))

你可以看到,大多数的DFT样品发生排队精确DTFT的0。

使用更长的信号

最后,让我们看看会发生什么当你使用更长的信号。(乔说,“我不能让传播消失用正弦信号的样本数量足够大的?”The answer, as we'll see demonstrated, is that you can make the spread get smaller, but you can't make it go away entirely as long as you have a finite number of samples.) Let's go up a factor of 10, to 15,000 samples of the sinusoid. (And let's go back to the original frequency of 307 Hz.)

f0 = 307;M = 15000;w0 = 2 *π* f0 / Fs;n = 0: (m - 1);y = cos (w0 * n);Y = fft (Y);M10 =长度(y) * 10;日元= fft (y, M10);f10 = (0: (M10-1)) * Fs / M10;f = (0: (M - 1)) * Fs / M; plot(f10,abs(Y10)); hold情节(f、abs (Y),‘*’)举行xlim ([f1 f2)标题(“DTFT DFT叠加的)包含(的频率(赫兹))

上面的图显示在同一规模的进一步M = 1500。你可以看到峰值要小得多,但很难看到细节。让我们放大。

p = 2 * Fs / (M + 1);f1 = f0 - 10 * p;f2 = f0 + 10 * p;xlim ([f1 f2))

现在你可以看到DTFT形状和DFT很像我们所得到的样本为1500点窗口的正弦信号。峰的宽度,以及旁瓣的间距,已经减少了10倍(15000/1500)。和间距(Hz)的DFT样品已经减少了相同数量。

总结

总之,正弦信号的傅里叶变换的一个有限的部分有一个形状特征:中心峰值(“主瓣”)与一群“叶”两个方向的峰值。这个形状DFT只是样品。根据准确的频率,DFT的输出可能看起来有点不同,根据频率恰好与DFT频率垃圾箱。




发表与MATLAB®R2014a

|
  • 打印

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。