matlab快速傅里叶变换
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§4.5.4 快速傅里叶变换的算法
k 0
0 4 2 6 9 1 注意 n n 1, n n 1, n n 到: 重新组合
19
0 0 0 y0 ( x0 n x2 ) n ( x1 n x3 ) 0 1 0 y1 ( x0 n x2 ) n ( x1 n x3 ) 0 2 0 y2 ( x0 n x2 ) n ( x1 n x3 ) 0 3 0 y3 ( x0 n x2 ) n ( x1 n x3 )
傅里叶积分:对变量范围为无限的连续的非周期函数变换成无限的连续的傅里叶 频谱序列。
离散时间傅里叶变换:将无限长数据序列变换为周期函数。
书上这些内容仅供有兴趣的读者参考。
§4.5.2 傅里叶级数与傅里叶积分
6
§4.1.1
§4.5.3
7
快速傅里叶变换的指令
快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的快速算法。
§4.5.3 快速傅里叶变换的指令
10
例 一维傅里叶变换
>>X = [ 4, 0, 3, 6, 2, 9, 6, 5] ;
>>Y=fft(X) Y = 35 -5.0711 +8.6569i -3 + 2i %尼奎斯特频率分量 - 2i %零频分量
共 轭 分 量
9.0711 +2.6569i
-5 9.0711 - 2.6569i -3 -5.0711 - 8.6569i
指令numel:计算列阵中的元素总数。
§4.5.3 快速傅里叶变换的指令
14
例
分析太阳黑子活动的周期性
通过分析300年左右的太阳黑子活动的记录资 料可以发现每过11年就会达到一个极大值。
Wolfer数图: 太阳黑子的数目与面积
放大的前50年的数据
§4.5.3 快速傅里叶变换的指令
15
图片取自维基百科
§4.5.3 快速傅里叶变换的指令
例 • 取样频率1000Hz,
• • • • • 取样间隔1/1000s=1ms 取样数250 总取样时间0.25S 建立时间轴:从0到0.25s 构造正弦波的信号 包含频率50Hz与100Hz
11
t = 0:0.001:.25; x = sin(2*pi*50*t) + sin(2*pi*120*t); y = x + 2*randn(size(t)); plot(y(1:50)) title('Noisy time domain signal')
§4.5 快速傅里叶变换
1
§4.5.1 离散傅里叶变换
§4.5.1 离散傅里叶变换
2
利用 得
§4.5.1 离散傅里叶变换
3
F4的逆矩阵为
以此类推,傅里叶变换的逆变换为
即
§4.5.1 离散傅里叶变换
4
说明
§4.5.1 离散傅里叶变换
§4.5.2 傅里叶级数与傅里叶积分(阅读)
5
傅里叶级数:将变量范围为无限的连续的周期函数变换成无限的离散的傅里叶频 谱序列。
§4.1.1
16
用FFT对太阳黑子数据处理:
Y = fft(wolfer); Y(1)=[]; plot(Y,'ro') title('Fourier Coefficients in the Complex Plane'); xlabel('Real Axis'); ylabel('Imaginary Axis');
%噪声信号
§4.5.3 快速傅里叶变换的指令
12
Y = fft(y,256); Pyy = Y.*conj(Y)/256; f = 1000/256*(0:127); plot(f,Pyy(1:128)) title('Power spectral density') xlabel('Frequency (Hz)')
现在要8次加法和6次乘法, 原来要12次加法和16次乘法。
4点的DFT变成了2点的对奇数数列和偶数数列的变换。
§4.5.4 快速傅里叶变换的算法
20
§4.5.4 快速傅里叶变换的算法
总结:
21
用这种递归分解与解决的方法来计算DFT就叫FFT。
§4.5.4 快速傅里叶变换的算法
第四章完
§4.5.3 快速傅里叶变换的指令
源自文库
8
1.一维的FFT及其逆变换
指令及语句格式: ������������������(������);������������������(������,������)
§4.5.3 快速傅里叶变换的指令
9
2. 二维的FFT及其逆变换
指令及其语句格式:������������������������(������)
傅里叶系数Y在 复平面上的分布
§4.5.3 快速傅里叶变换的指令
17
画振幅相对于频率的周期 图
n=length(Y);
power = abs(Y(1:floor(n/2))).^2; freq = (1:n/2)/n; plot(freq,power)
xlabel('cycles/year')
title('Periodogram')
将周期图的横坐标改变为倒数,即将(周 期/年)改为(年/周期)可以清楚看出11 年的周期。
§4.5.3
快速傅里叶变换的指令
§4.5.4 快速傅里叶变换的算法(阅读)
18
FFT:利用离散傅里叶变换的对称性和允余性的 快速算法。
mk ym xk n , (m 0,1, 2,3) 3
0 0 0 0 y0 x0n x1n x2n x3n 0 1 2 3 y1 x0n x1n x2n x3n 0 2 4 6 y2 x0n x1n x2n x3n 0 3 6 9 y3 x0n x1n x2n x3n
§4.5.3 快速傅里叶变换的指令
13
例
t = 0:1/100:10-1/100; x = sin(2*pi*15*t) +sin(2*pi*40*t); y = fft(x); m = abs(y); f =(0:numel(y)-1)'*100/numel(y); plot(f,m) grid on ylabel('Abs. Magnitude') xlabel('Frequency [Hertz]')
k 0
0 4 2 6 9 1 注意 n n 1, n n 1, n n 到: 重新组合
19
0 0 0 y0 ( x0 n x2 ) n ( x1 n x3 ) 0 1 0 y1 ( x0 n x2 ) n ( x1 n x3 ) 0 2 0 y2 ( x0 n x2 ) n ( x1 n x3 ) 0 3 0 y3 ( x0 n x2 ) n ( x1 n x3 )
傅里叶积分:对变量范围为无限的连续的非周期函数变换成无限的连续的傅里叶 频谱序列。
离散时间傅里叶变换:将无限长数据序列变换为周期函数。
书上这些内容仅供有兴趣的读者参考。
§4.5.2 傅里叶级数与傅里叶积分
6
§4.1.1
§4.5.3
7
快速傅里叶变换的指令
快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的快速算法。
§4.5.3 快速傅里叶变换的指令
10
例 一维傅里叶变换
>>X = [ 4, 0, 3, 6, 2, 9, 6, 5] ;
>>Y=fft(X) Y = 35 -5.0711 +8.6569i -3 + 2i %尼奎斯特频率分量 - 2i %零频分量
共 轭 分 量
9.0711 +2.6569i
-5 9.0711 - 2.6569i -3 -5.0711 - 8.6569i
指令numel:计算列阵中的元素总数。
§4.5.3 快速傅里叶变换的指令
14
例
分析太阳黑子活动的周期性
通过分析300年左右的太阳黑子活动的记录资 料可以发现每过11年就会达到一个极大值。
Wolfer数图: 太阳黑子的数目与面积
放大的前50年的数据
§4.5.3 快速傅里叶变换的指令
15
图片取自维基百科
§4.5.3 快速傅里叶变换的指令
例 • 取样频率1000Hz,
• • • • • 取样间隔1/1000s=1ms 取样数250 总取样时间0.25S 建立时间轴:从0到0.25s 构造正弦波的信号 包含频率50Hz与100Hz
11
t = 0:0.001:.25; x = sin(2*pi*50*t) + sin(2*pi*120*t); y = x + 2*randn(size(t)); plot(y(1:50)) title('Noisy time domain signal')
§4.5 快速傅里叶变换
1
§4.5.1 离散傅里叶变换
§4.5.1 离散傅里叶变换
2
利用 得
§4.5.1 离散傅里叶变换
3
F4的逆矩阵为
以此类推,傅里叶变换的逆变换为
即
§4.5.1 离散傅里叶变换
4
说明
§4.5.1 离散傅里叶变换
§4.5.2 傅里叶级数与傅里叶积分(阅读)
5
傅里叶级数:将变量范围为无限的连续的周期函数变换成无限的离散的傅里叶频 谱序列。
§4.1.1
16
用FFT对太阳黑子数据处理:
Y = fft(wolfer); Y(1)=[]; plot(Y,'ro') title('Fourier Coefficients in the Complex Plane'); xlabel('Real Axis'); ylabel('Imaginary Axis');
%噪声信号
§4.5.3 快速傅里叶变换的指令
12
Y = fft(y,256); Pyy = Y.*conj(Y)/256; f = 1000/256*(0:127); plot(f,Pyy(1:128)) title('Power spectral density') xlabel('Frequency (Hz)')
现在要8次加法和6次乘法, 原来要12次加法和16次乘法。
4点的DFT变成了2点的对奇数数列和偶数数列的变换。
§4.5.4 快速傅里叶变换的算法
20
§4.5.4 快速傅里叶变换的算法
总结:
21
用这种递归分解与解决的方法来计算DFT就叫FFT。
§4.5.4 快速傅里叶变换的算法
第四章完
§4.5.3 快速傅里叶变换的指令
源自文库
8
1.一维的FFT及其逆变换
指令及语句格式: ������������������(������);������������������(������,������)
§4.5.3 快速傅里叶变换的指令
9
2. 二维的FFT及其逆变换
指令及其语句格式:������������������������(������)
傅里叶系数Y在 复平面上的分布
§4.5.3 快速傅里叶变换的指令
17
画振幅相对于频率的周期 图
n=length(Y);
power = abs(Y(1:floor(n/2))).^2; freq = (1:n/2)/n; plot(freq,power)
xlabel('cycles/year')
title('Periodogram')
将周期图的横坐标改变为倒数,即将(周 期/年)改为(年/周期)可以清楚看出11 年的周期。
§4.5.3
快速傅里叶变换的指令
§4.5.4 快速傅里叶变换的算法(阅读)
18
FFT:利用离散傅里叶变换的对称性和允余性的 快速算法。
mk ym xk n , (m 0,1, 2,3) 3
0 0 0 0 y0 x0n x1n x2n x3n 0 1 2 3 y1 x0n x1n x2n x3n 0 2 4 6 y2 x0n x1n x2n x3n 0 3 6 9 y3 x0n x1n x2n x3n
§4.5.3 快速傅里叶变换的指令
13
例
t = 0:1/100:10-1/100; x = sin(2*pi*15*t) +sin(2*pi*40*t); y = fft(x); m = abs(y); f =(0:numel(y)-1)'*100/numel(y); plot(f,m) grid on ylabel('Abs. Magnitude') xlabel('Frequency [Hertz]')