用MATLAB进行图像处理

图像处理概念、算法和MATLAB

利用fft的输出绘制DTFT

在我傅里叶变换系列我一直在试图解决围绕这个主题的一些常见的困惑。在今天的节目中,我想看看如何使用FFT.函数生成离散时间傅里叶变换(DTFT)的幅度图,其形式可能在教科书中看到。回忆,FFT.计算离散傅里叶变换(DFT)。我描述了DFT和DFT之间的关系3月15日发布

对于我的例子,我将使用序列等于1等于0其他地方。

这是这个序列的DTFT级别的图:

现在让我们看看用什么FFT.

X = 1 (1, 5)
x = 1 1 1 1 1
X = fft (X);情节(abs (X))

哇,这和上面的dft幅大小图一点都不接近。为什么看起来只有两个点?好吧,看看实际值X

X
X = 5 0 0 0

我们有一个5和4 0。这是怎么回事?我在我身上解释了这一点3月15日发布当我讨论DFT和DTFT之间的关系时。DFT的输出是DTFT的样本,在这种情况下,采样位置恰好恰好与DTFT中的四个零的位置对齐。

您可以通过零填充获得更精细的采样(以及一个更好的更好的DTFT图)。这里我将使用零填充语法FFT.

N = 256;X = fft(X, N);情节(abs (X))

这是一个更平滑的曲线,但它仍然看起来比上面的DTFT幅度图不同。为了解释我们正在寻找的MATLAB输出,让我展示一个DTFT幅度曲线,显示三个时期而不是一个。

你可以看到MATLAB的输出是DTFT的一个周期,但它不是通常绘制的周期,它是.而是从0到.得到一个情节,可以使用fftshift函数。

绘图(ABS(FFTShift(X))))

这就给我们留下了标记频率轴的问题。我们要的是以弧度为单位的图

我记得DFT和DFT的频率比例是这样的DFT的长度对应于频率在dtft。

所以以弧度表示的频率对应于的输出元素FFT.是:

w = 2*pi * (0:(N-1)) / N;

但我们在呼唤fftshift来绘制DTFT的大小,因此我们必须对我们的频率进行类似的移位:

w2 = fftshift (w);情节(w2)

现在我们的频率开始和有一个中间不连续。以下是解决方案的一种方法:

W3 = unwrap(w2 - 2*pi);情节(w3)

现在我们可以用x轴标签重做我们的幅度dtft绘图。

情节(w3、abs (fftshift (X)))包含('弧度'

我经常喜欢看的倍数更清楚的是沿着x轴。实现这一点的一种方法是将频率变量归一化

图(W3 / PI,ABS(FFTSHIFT(X)))XLABEL(的弧度/ \π

另一种选择是尝试艾伦pilabels.对MATLAB中央文件交换的贡献。

下次,我正在考虑解决以下原因以下输出复杂的问题:

Fft ([1 2 3 2 1])
Ans = 9.0000 -2.1180 - 1.5388i 0.1180 + 0.3633i 0.1180 - 0.3633i -2.1180 + 1.5388i

许多人认为这是真的。




MATLAB®7.10发布

|
  • 打印
  • 发送电子邮件

注释

要留下评论,请点击这里登录到您的MathWorks帐户或创建一个新帐户。