一维离散傅里叶变换,信号分解

 傅里叶变换的应用涵盖了概率与统计、信号处理、量子力学和图像处理等学科。

离散傅里叶变换的公式如下:



在MATLAB中,可以直接使用函数库fft(X)对一维向量X做傅里叶变换,分析信号的组成。如下例子处理一维离散信号

信号分析

通过傅里叶变换,可以将实变信号f(t)分解成各个频率分量的线性叠加,进而从频率的角度研究信号的组成。

来看这个杂乱无章的曲线图,你是否能看出它的规律?


Figure 1 What's the law of the signal?

让我们来对它做一维离散傅里叶变换,得到下图:


Figure 2 The Fourier Transform of the signal in the figure 1

从图2的傅里叶变换中我们可以观察到信号在频率为50Hz和120Hz的地方有峰值,表明了原信号主要由频率为50Hz和120Hz的三角函数信号组成。

上面例子的具体MATLAB代码如下:

clear
Fs = 1000;            % Sampling frequency
T = 1/Fs;             % Sampling period
L = 1000;             % Length of signal
t = (0:L-1)*T;        % Time vector

S = 0.9*sin(2*pi*50*t) + 1.8*sin(2*pi*120*t); %standard signal
X = S + 1*randn(size(t)); %there are some noise mixing in the signal.

Y = fft(X);           % Fourier Transform of the signal

f = 1:L/2;            % the frequence of label
                      % half of Y is enough to show the information.
Y = Y./L*2;           % calculate the amplitude of Fourier Transform of the signal

%draw the curve
figure(1);
plot(t,X);            % show the original signal
xlabel('时间')
ylabel('振幅')
figure(2);
plot(f,abs(Y(1:L/2)));% show the Fourier Transform of the signal
xlabel('Hz');
ylabel('振幅');

傅里叶变换可以把信号的振动频率分离出来,我们可以通过设置不同频率分量前的系数,可实现信号的滤波。

如含有噪声的信号:


Figure 3 signal mixing with noise

将该信号进行傅里叶变换,然后使得高频信号的系数为零,再傅里叶反变换回原信号,可得到滤波后的结果:

Figure 4 signal after filtering

要注意的是,要想使用好傅里叶变换,必须对傅里叶变换有较为深入的了解,比如上面的滤波中,如果设置滤波频率的界限不同,那么其滤波效果也不同;还要注意的是,傅里叶变换后的信号具有周期性,其数据关于中心位置对称,所以滤波界限要关于中心对称;上例中具体实现代码如下:

clear
Fs = 1000;
T = 1./Fs;
L = 1000;
t = (0:L-1)*T;
S = 2*cos(2*pi*2*t)+3*sin(2*pi*4*t);    %standard signal without the noise
X = S+0.3*randn(size(t));               %signal mixing with noise
figure(1);
plot(t,X);
title('signal mixing with noise');
xlabel('time');
ylabel('amplitude');

Y1 = fft(X);                            %fourier transform

threadhold = 30;                        %setting the filtering threadhold 
Y1(threadhold:(L-threadhold)) = 0;      %filtering

X1 = ifft(Y1);                          %Inverse Fourier transform
figure(2);
plot(t,X1);
title('signal after filtering');
xlabel('time');
ylabel('amplitude');

本主要讲了离散傅里叶变换的两个应用——分析信号组成和滤波,其用处还很广泛,比如数据压缩、求微分方程等等。

<think>嗯,用户的问题是关于二维离散傅里叶变换(2D DFT)如何表示为一维离散傅里叶变换(1D DFT)的相乘形式的推导过程。我需要先回忆一下傅里叶变换的基础知识,尤其是二维和一维之间的关系。 首先,二维DFT的定义式可能是什么?根据引用[4],二维离散傅里叶逆变换的定义式是给定的,但用户现在问的是正向变换。不过不管正向还是逆向,结构应该是类似的。假设二维DFT的公式是对于M×N的矩阵,每个频率分量F(u,v)由原函数f(x,y)的加权和计算得到。 用户想知道如何将二维DFT分解一维DFT的相乘。这可能涉及到行和列分别进行一维变换。比如先对每一行做一维DFT,然后再对每一列做一维DFT,或者反过来。这种情况下,二维变换可以分解为两个一维变换的连续应用,也就是可分离性。 接下来,我需要详细推导这个过程。首先写出二维DFT的标准公式,然后尝试将其分解为两次一维变换。例如,先对x方向进行一维DFT,得到中间结果,然后再对y方向进行一维DFT,这样最终的二维DFT就是这两个步骤的结合。 此外,用户提到“相乘形式”,可能需要数学上的表达,证明二维DFT可以表示为两个一维DFT的乘积。也就是说,F(u,v) = 一维DFT在x方向的结果乘以一维DFT在y方向的结果。不过实际应该是两次变换的连续应用,而不是简单的相乘,可能需要用矩阵运算或张量积来解释。 还需要考虑傅里叶变换的可分离性质,这是二维变换能够分解为行和列变换的关键。引用[4]中的二维逆变换定义式可能帮助推导正向变换的可分离性。例如,二维变换可以分解为首先对每一行应用一维DFT,然后对得到的矩阵的每一列再次应用一维DFT,或者反之。这样,每个步骤都是一维变换,最终结果等同于二维变换。 另外,用户提供的引用中有关于傅里叶级数和傅里叶变换的关系,可能涉及到连续和离散的区别,但用户的问题集中在离散情况,特别是二维和一维的关系。引用[2]提到FFT算法减少计算量,这可能与分解二维变换为两次一维变换有关,从而利用FFT的高效性。 在推导过程中,数学表达式的正确性很重要。比如,二维DFT的公式应该是: $$ F(u, v) = \sum_{x=0}^{M-1} \sum_{y=0}^{N-1} f(x, y) e^{-i2\pi(\frac{ux}{M} + \frac{vy}{N})} $$ 然后,是否可以将其分解为: 首先对每一行y固定,计算x方向的一维DFT: $$ G(u, y) = \sum_{x=0}^{M-1} f(x, y) e^{-i2\pi \frac{ux}{M}} $$ 然后对每一列u固定,计算y方向的一维DFT: $$ F(u, v) = \sum_{y=0}^{N-1} G(u, y) e^{-i2\pi \frac{vy}{N}} $$ 这样,二维DFT就被分解为两个一维DFT的连续应用,也就是先做行变换,再做列变换。因此,整个二维变换可以表示为两次一维变换的乘积或组合。这里的相乘可能是指运算的级联,而不是数学上的乘积,需要明确说明。 另外,可能需要注意指数部分的分解,即$e^{-i2\pi(\frac{ux}{M} + \frac{vy}{N})}$可以拆分为$e^{-i2\pi \frac{ux}{M}} \cdot e^{-i2\pi \frac{vy}{N}}$,这使得二维变换可以分解为两个一维变换的乘积。因此,求和符号也可以分解为两个独立的求和,即先对x求和,再对y求和,或者反过来。 总结来说,推导的关键步骤是将二维DFT的双重求和分解为两个单重求和的乘积,利用指数的可分离性,从而将二维变换转化为两个一维变换的连续应用。这应该是用户想要的理解过程。</think>### 二维离散傅里叶变换一维的关系推导 二维离散傅里叶变换(2D DFT)可通过**两次一维离散傅里叶变换(1D DFT)的级联**实现,其核心在于**可分离性**。以下是推导过程: --- #### 1. 二维DFT定义 对$M \times N$的离散信号$f(x,y)$,其2D DFT定义为: $$ F(u, v) = \sum_{x=0}^{M-1} \sum_{y=0}^{N-1} f(x, y) \cdot e^{-i2\pi\left(\frac{ux}{M} + \frac{vy}{N}\right)} \quad (u=0,1,\dots,M-1; v=0,1,\dots,N-1) $$ --- #### 2. 指数项的可分离性 关键步骤是将指数项拆分为两个独立因子: $$ e^{-i2\pi\left(\frac{ux}{M} + \frac{vy}{N}\right)} = e^{-i2\pi\frac{ux}{M}} \cdot e^{-i2\pi\frac{vy}{N}} $$ 此时,二维求和可分解为**先对$x$求和,再对$y$求和**(或反之)。 --- #### 3. 分步一维变换 **第一步:固定$y$,对$x$方向做1D DFT** 对每一行$y$,计算横向变换: $$ G(u, y) = \sum_{x=0}^{M-1} f(x, y) \cdot e^{-i2\pi\frac{ux}{M}} $$ **第二步:固定$u$,对$y$方向做1D DFT** 对每一列$u$,计算纵向变换: $$ F(u, v) = \sum_{y=0}^{N-1} G(u, y) \cdot e^{-i2\pi\frac{vy}{N}} $$ --- #### 4. 合并结果 将两式结合,得到: $$ F(u, v) = \sum_{y=0}^{N-1} \left[ \sum_{x=0}^{M-1} f(x, y) \cdot e^{-i2\pi\frac{ux}{M}} \right] \cdot e^{-i2\pi\frac{vy}{N}} $$ 即: $$ F(u, v) = \text{1D DFT纵向}\left( \text{1D DFT横向}(f(x, y)) \right) $$ --- #### 5. 矩阵形式解释 - **行优先变换**:将输入矩阵的每一行进行1D DFT,得到中间矩阵$G(u,y)$。 - **列优先变换**:将中间矩阵的每一列进行1D DFT,最终得到$F(u,v)$。 - **计算量优化**:通过分离计算,复杂度从$O(M^2N^2)$降为$O(MN(M + N))$[^2]。 --- ### 关键结论 1. **可分离性**:二维变换可分解为两个方向的一维变换。 2. **计算效率**:利用FFT算法,2D DFT的计算时间与一维FFT的两次应用成正比[^2]。 3. **物理意义**:频域分离为横向和纵向频率的叠加,类似于信号在空间两个维度的独立频谱分析[^1]。 ---
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山颠海涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值