傅里叶变换公式整理

1、一维傅里叶变换

1.1 一维连续傅里叶变换

  • 正变换:

F ( ω ) = ∫ − ∞ ∞ f ( t ) ⋅ e − i ω t d t F(\omega) = \int_{-\infty}^{\infty}f(t)\cdot e^{-i\omega t}dt F(ω)=f(t)eiωtdt

  • 逆变换:

f ( t ) = ∫ − ∞ ∞ F ( ω ) ⋅ e i ω t d ω f(t) = \int_{-\infty}^{\infty}F(\omega)\cdot e^{i\omega t}d\omega f(t)=F(ω)eiωtdω

1.2 一维离散傅里叶变换

  • 正变换:

F ( u ) = ∑ x = 0 N − 1 f ( x ) ⋅ e − i 2 π N x u u = 0 , 1 , 2 , . . . , N − 1 F(u) = \sum_{x=0}^{N-1}f(x)\cdot e^{-i\frac{2\pi}{N}xu} \\ u = 0,1,2, ... , N-1 F(u)=x=0N1f(x)eiN2πxuu=0,1,2,...,N1

  • 逆变换:

f ( x ) = 1 N ∑ u = 0 N − 1 F ( u ) ⋅ e i 2 π N x u x = 0 , 1 , 2 , . . . , N − 1 f(x) = \frac{1}{N}\sum_{u=0}^{N-1}F(u)\cdot e^{i\frac{2\pi}{N}xu}\\x = 0,1,2, ... , N-1 f(x)=N1u=0N1F(u)eiN2πxux=0,1,2,...,N1

2、二维傅里叶变换

2.1 二维连续傅里叶变换

  • 正变换
    F ( u , v ) = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( x , y ) e − j 2 π ( u x + v y ) d x d y F(u,v)=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}f(x,y)e^{-j2\pi(ux+vy)}dxdy F(u,v)=f(x,y)ej2π(ux+vy)dxdy

  • 逆变换
    f ( x , y ) = ∫ − ∞ ∞ ∫ − ∞ ∞ F ( u , v ) e j 2 π ( u x + v y ) d u d v f(x,y)=\int_{-\infty}^{\infty}\int_{-\infty}^{\infty}F(u,v)e^{j2\pi(ux+vy)}dudv f(x,y)=F(u,v)ej2π(ux+vy)dudv

2.2 二维离散傅里叶变换

令f(x,y)表示一幅大小为MXN像素的数字图像,其中,x=0,1,2,…,M-1, y=0,1,2,…,N-1,由F(u,v)表示的f(x,y)的二维离散傅里叶变换(DFT)由下式给出:

F ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) e − j 2 π ( u x M + v y N ) u , v = 0 , 1 , 2 , . . . , N − 1 F(u,v) = \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)e^{-j2\pi(\frac{ux}{M}+\frac{vy}{N})}\\u,v = 0, 1, 2, ... , N-1 F(u,v)=x=0M1y=0N1f(x,y)ej2π(Mux+Nvy)u,v=0,1,2,...,N1

式子当中,u也是属于0到M-1,v属于0到N-1。频率域就是属于u,v作为频率变量,由F(u,v)构成的坐标系,这块MXN的区域我们通常称为频率矩形,很明显频率矩形的大小和输入图像的大小相同。

有傅里叶变换,当然就有傅里叶反变换(IDFT):
f ( x , y ) = 1 M N ∑ u = 0 M − 1 ∑ v = 0 N − 1 F ( u , v ) e j 2 π ( u x M + v y N ) x , y = 0 , 1 , 2 , . . . , N − 1 f(x,y) = \frac{1}{MN}\sum_{u=0}^{M-1}\sum_{v=0}^{N-1}F(u,v)e^{j2\pi(\frac{ux}{M}+\frac{vy}{N})}\\ x,y = 0, 1, 2, ... , N-1 f(x,y)=MN1u=0M1v=0N1F(u,v)ej2π(Mux+Nvy)x,y=0,1,2,...,N1

clc,clear;
a = [1 2 3 5 5 ; 4 7 9 5 4;1 4 6 7 5;5 4 3 7 1;8 7 5 1 3];%a矩阵取5*5
b = [1 5 4; 3 6 8; 1 5 7]; %b矩阵如多数模板一样取3*3
c = conv2(a,b)
d = conv2(a,b,'same')

a(7,7) = 0;
b(7,7) = 0;
e = ifft2(fft2(a).*fft2(b)) % .* 对应元素相乘

%
c =
     1     7    17    28    42    45    20
     7    39    89   127   134   110    56
    14    61   151   212   229   177    87
    12    74   165   226   245   174    72
    24    98   178   190   179   155    55
    29    98   179   139   112    80    31
     8    47    96    75    43    22    21
%

%
d =

    39    89   127   134   110
    61   151   212   229   177
    74   165   226   245   174
    98   178   190   179   155
    98   179   139   112    80
%

%
e =

    1.0000    7.0000   17.0000   28.0000   42.0000   45.0000   20.0000
    7.0000   39.0000   89.0000  127.0000  134.0000  110.0000   56.0000
   14.0000   61.0000  151.0000  212.0000  229.0000  177.0000   87.0000
   12.0000   74.0000  165.0000  226.0000  245.0000  174.0000   72.0000
   24.0000   98.0000  178.0000  190.0000  179.0000  155.0000   55.0000
   29.0000   98.0000  179.0000  139.0000  112.0000   80.0000   31.0000
    8.0000   47.0000   96.0000   75.0000   43.0000   22.0000   21.0000
%
  • 8
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 傅里叶公式可以用numpy库中的函数numpy.fft.fft()来实现,代码如下:import numpy as np x = np.array([1, 2, 3, 4]) fourier = np.fft.fft(x) print(fourier) ### 回答2: 傅里叶变换是一种将一个函数从时域表示转化为频域表示的方法。其公式表达为: \[ F(\omega) = \int_{-\infty}^{\infty} f(t)e^{-i\omega t}dt \] 其中,\( F(\omega) \) 是频域函数,\( f(t) \) 是时域函数,\( \omega \) 是角频率。 在Python中,我们可以使用SciPy库来实现傅里叶变换。具体步骤如下: 1. 导入所需的库: ```python from scipy.fft import fft, fftfreq import numpy as np import matplotlib.pyplot as plt ``` 2. 创建时域信号: ```python # 创建时间轴 t = np.linspace(0, 2*np.pi, 1000) # 创建时域信号 f_t = np.sin(5 * t) + np.cos(10 * t) ``` 3. 进行傅里叶变换: ```python # 进行傅里叶变换 F_omega = fft(f_t) # 计算频率轴 freq = fftfreq(len(t), t[1]-t[0]) ``` 4. 绘制频谱图: ```python # 绘制频谱图 plt.plot(freq, np.abs(F_omega)) plt.xlabel("Frequency (Hz)") plt.ylabel("Amplitude") plt.grid() plt.show() ``` 以上就是使用Python代码实现傅里叶变换的基本步骤。在实际应用中,可以根据具体需求进行相应的参数设置和信号处理。 ### 回答3: 傅里叶公式描述了一个周期性函数可以由一系列正弦和余弦函数的线性组合表示。在Python中,可以使用NumPy库中的fft模块来实现傅里叶变换和傅里叶逆变换。 首先,需要导入NumPy库: import numpy as np 然后,定义一个周期性函数,例如: def f(x): return np.sin(x) + 0.5*np.sin(2*x) + 0.3*np.sin(3*x) 接下来,生成一组等间隔的横坐标值,并计算对应的函数值: x = np.linspace(0, 2*np.pi, 1000) y = f(x) 然后,使用fft.fft函数计算傅里叶变换: y_fft = np.fft.fft(y) 傅里叶变换的结果是一个复数数组,可以使用np.abs函数取得其绝对值(振幅谱): amplitude = np.abs(y_fft) 此外,还可以使用np.angle函数取得每个频率分量的相位角度。 最后,使用fft.ifft函数进行傅里叶逆变换: y_ifft = np.fft.ifft(y_fft) 傅里叶逆变换得到的结果是复数数组,可以取其实部或虚部作为逆变换的结果,例如: inverse_result = np.real(y_ifft) 可以根据需要进行进一步的处理和可视化。在完成相关的操作后,记得导入Matplotlib库并绘制图形,例如: import matplotlib.pyplot as plt plt.plot(x, amplitude) plt.show() 这段代码将绘制出函数的振幅谱图。 上述代码演示了如何在Python中使用fft模块实现傅里叶公式。通过调整函数f(x)的定义和参数,可以计算不同函数的傅里叶变换和逆变换,并进一步进行相关的分析和处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值