矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2441|回复: 8

用excel验证傅立叶变换

[复制链接]
     
发表于 2021-7-16 21:01:18 | 显示全部楼层 |阅读模式
本帖最后由 iffi123 于 2021-7-16 21:37 编辑

傅立叶变换在数字信号处理里有着广泛应用,与其看着书上写的头头是道, 不如自己亲自算算

利用excel表的计算功能,实际验证一下

构造一个输入信号:   f(N)=57+110sin(2*PI*500*N/2500)+320cos(2*PI*200*N/2500)
为了方便计算, 函数是离散的,它包含了直流(幅度57),  幅度110的500Hz正弦波, 以及幅度320的200Hz余弦波三项。

下面通过傅立叶变换,计算出上述三个分量的幅度值(系数)

计算公式如下,  公式本身是针对连续时间函数的, 不过验证采用有限点求和代替积分
傅立叶级数公式2.gif

先假设200Hz, 500Hz为基频100Hz的谐波,采样频率取500Hz的5倍即2500Hz
公式里的T是指基频的周期,也就是100Hz, 积分区间取0-T (0-2π), 所以只要计算f(N)的25个点(N=0 -24), 也就是D列

然后根据公式,还需要构造一个单位幅度500Hz正弦波,以及单位幅度200Hz余弦波, 如图的E列,和F列, 另外还构造一个单位幅度400Hz正弦波(输入信号无此分量,用于对照),即G列

再分别和输入信号(D列)逐一相乘(直流分量K列的不需要相乘, 见公式)

然后对相乘后的每1列求和(25项), 这个结果代表积分值(原本还需要乘以Δt, 也就是采样周期,因为计算公式分母的T也包含Δt, 可抵消)
dft.gif

这样可以得出,500Hz的累加值为1375, 为计算幅度,它需要除以T(前面说过,分子分母抵消掉采样周期,只要用采样点数即可代替, 25个采样点代表1个基频周期), 所以1375/25*2=110, 与输入信号的幅度完全一致

同样的200Hz的为4000, 所以幅度=4000/25*2=320, 也是一样

而对400Hz计算结果为-1.3074E-12, 视为0,说明输入不含400Hz

最后直流分量累加值为1425, 幅度为1425/25=57(不需要再乘以2)

验证成功

     
发表于 2021-7-18 15:52:20 来自手机 | 显示全部楼层
题目简单了,欧拉公式展开可以直接眼瞅出结果。
连续到离散的过程,有时域周期化、一致收敛、采样,导出频域连续,再到频域采样等一系列过程,后续还有窗函数、噪声、fft等内容也挺有意思的,希望坚持下去。
回复 支持 1 反对 0

使用道具 举报

     
发表于 2021-7-16 23:04:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2021-7-18 22:08:21 | 显示全部楼层
估计bailoao 是玩信号处理的专业人士!
回复 支持 反对

使用道具 举报

     
发表于 2021-7-19 07:44:47 | 显示全部楼层
楼主比俺强多了!想当年,为了弄明白啥叫“二进制”,硬是趴在插队时的炕上,用0和1排了长长的队,花了好几张练习簿的纸哦.........
回复 支持 反对

使用道具 举报

     
发表于 2021-7-23 11:59:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2021-7-23 12:48:41 来自手机 | 显示全部楼层
只有膜拜!
回复 支持 反对

使用道具 举报

     
发表于 2021-8-26 15:20:52 | 显示全部楼层
数学这样应用厉害。
回复 支持 反对

使用道具 举报

     
发表于 2021-9-1 17:25:48 | 显示全部楼层
楼主的实验精神令人佩服。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-5-13 15:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表