对于一个信号来看,信号强度随时间的变化规律就是时域特性,信号由哪些单一频率信号合成就是频域特性。贯穿时域和频域的方法之一就是傅里叶分析。傅里叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。根据该原理创立的傅里叶变换算法利用直接测量到的原始信号,以累加的方式计算该信号中不同正弦波的频率、振幅和相位。
对矩阵的傅里叶变换可以用图像傅里叶变换解释其实际意义。图像的频率是表征图像灰度变化强烈程度的指标,是灰度在平面空间上的梯度。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,其逆变换是将图像的频率分布函数变换为灰度分布函数变换。
在以上的例子中提到了二维傅里叶变换,这里介绍下二维傅里叶变换。从最简单的一维傅里叶变换公式说起:
F(ω)=∫−∞+∞f(t)⋅e−iωt⋅dt
f(t)=12π∫−∞+∞f(ω)⋅e−iωt⋅dω
相当于把信号f(t)分解成一组正弦波,角频率是 ω 的正弦波分量,幅度和相角由 1(2π)F(ω) 表示。二维傅里叶变换其实也是类似的:
F(u,v)=∫−∞+∞∫−∞+∞f(x,y)e−i(ux+vy)dxdy
以上形式的连续傅里叶变换,对 f(x,y) 做2D FT实际上相当于对两个方向做1D FT。可以理解 e−i(ux+vy) 实际是一个平面波(的共轭),传播方向和 (u,v) 相同,角频率是 u2+v2−−−−−−√ 。我们可以说成是平面波在x方向的角频率是u,在y方向上的角频率是v,幅度和相位由 F(u,v) 表示。
但是在计算机中信号通常是离散的,而且不是无限长的,因此信号分析中使用的是离散傅里叶变换DFT,2D正变换的公式如下
F(u,v)=1MN∑x=0M−1∑y=0N−1f(x,y)e−j2π(uxM+vyN)
其中
u=0,1,2,...,M−1
和
v=0,1,2,...,N−1
。其中,变量u和v用于确定它们的频率,频域系统是由
F(u,v)
长成的坐标系,其中u和v作为变量。
当我们复习了二维傅里叶变换的意义后,我们回到题目上,继续看对矩阵的傅里叶变换。这几天在我看压缩感知的程序时,其中有一句话是
phi=fft (eye(N,N)/sqrt(N));
其中用了fft函数,在该函数的help文档中写道:
If X is a matrix, then fft(X) treats the columns of X as vectors and returns the Fourier transform of each column
也就是fft(X)是把每个列作为向量,得到每列元素的傅里叶变换。
在对向量的DFT的描述如下:
Y=fft(X) and X=ifft(Y) implement the Fourier transform and inverse Fourier transform, respectively. For X and Y of length n, these transforms are defined as follows:
Y(k)=∑j=1nX(j)W(j−1)(k−1)n
X(j)=1n∑k=1nY(k)W−(j−1)(k−1)n
where
Wn=e(−2πi)n
is one of n roots of unity.
为验证这个说法,我们采用一个 3×3 的矩阵进行手算,对比Matlab得到的结果。矩阵E如下:
100010001
Y(1)=∑j=13X(j)e−2πi3(0)(j−1)
Y(2)=∑j=13X(j)e−2πi3(1)(j−1)
Y(3)=∑j=13X(j)e−2πi3(2)(j−1)
得到
1+0i1+0i1+0i1+0i−0.5−0.8i−0.5+0.8i1+0i−0.5+0.8i−0.5−0.8i
和matlab中fft(eye(3,3))得到的结果相同。