傅里叶变换的线性算子表示(以 MATLAB 中 `fftc(eye(N),1)` 为例)
文章目录
背景
在信号处理或图像重建中,我们常用 傅里叶变换 来分析信号的频率特性。傅里叶变换其实是一个 线性算子(线性变换),因此它可以写成一个矩阵与向量相乘的形式。
1. 什么是 E = fftc(eye(N),1)?
在 MATLAB 中:
|
|
这段代码的含义是:对单位矩阵 eye(N) 的每一列,在第1维上应用中心化的傅里叶变换(fftc 代表 centered FFT,即变换后频率是居中的)。
这实际上是在构造一个 N×N 的线性变换矩阵,它表示 一维傅里叶变换操作(作用在第1维)。
2. 线性变换的角度理解傅里叶变换
一个向量 $\mathbf{x}$,我们可以写成:
$$\mathbf{x} = x_1 \mathbf{e}_1 + x_2 \mathbf{e}_2 + \cdots + x_n \mathbf{e}_n = I \mathbf{x}$$
其中 $\mathbf{e}_i$ 是单位基向量,第 $i$ 个元素为 1,其余为 0。
令 $\mathcal{F}$ 表示傅里叶变换算子,那么:
$$\mathcal{F} \mathbf{x} = \mathcal{F}(x_1 \mathbf{e}_1 + x_2 \mathbf{e}_2 + \cdots) = x_1 \mathcal{F}(\mathbf{e}_1) + x_2 \mathcal{F}(\mathbf{e}_2) + \cdots$$
也就是说,
$$\mathcal{F} \mathbf{x} = \mathcal{F} (I \mathbf{x}) = (\mathcal{F} I)\mathbf{x}$$
这说明,只要你知道 $\mathcal{F}(\mathbf{e}_i)$ 对每个 $\mathbf{e}_i$ 的作用,就知道了整个 $\mathcal{F}$ 对任意 $\mathbf{x}$ 的作用。
因此我们可以写出:
$$\mathcal{F} = \text{fftc}(\text{eye}(N), 1)$$
3. MATLAB 中的实现含义
|
|
eye(N)是 $N \times N$ 的单位矩阵,每列是一个单位基向量;fftc(eye(N), 1)表示对每一列向量做第1维的中心化傅里叶变换;- 所以
E的第 $i$ 列是 $\mathcal{F}(\mathbf{e}_i)$; - 因此,
E * x就等价于对向量x施加一维傅里叶变换。
4. 小示例
|
|
5. 总结
- 傅里叶变换是一个线性变换,可以表示为矩阵乘法;
fftc(eye(N), 1)构造出这个变换的矩阵形式;- 用于理解和分析变换结构,或做高阶操作如 Kronecker 产品、多维构造等。
文章作者 MyBlogTestAuthor
上次更新 2025-12-23