基于MATLAB的傅里叶级数可视化
去年有幸选到学校MATLAB的选修课,课程作业是利用MATLAB写一个GUI程序,作为电类专业的小学渣,当时正学习《信号与系统》,同时看到前辈们对于傅里叶变换的各种精妙文章,就做了这样一个傅里叶级数可视化的小程序。
最近整理资料时候,写此文章将其开源,希望对其他人有帮助啦。
程序是这样纸的:
程序主界面
注:部分算法参考了网上关于傅里叶级数展开的已有文章。
代码链接:https://download.****.net/download/sinat_38896294/10647356
=====================================程序介绍=======================================
一、打开方式
运行 main.m文件 即可打开程序
二、选题背景
- 傅里叶变换是电类专业研究“信号与系统“的核心内容,正确理解傅里叶变换,首先应充分理解傅里叶级数的物理意义,即:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。
- 本程序通过对傅里叶级数展开过程的可视化分析,利用MATLAB在绘图、计算方面的优势,将傅里叶的展开过程清晰地呈现出来,从而更好地帮助用户理解傅里叶级数,为电类专业未来的学习打下良好基础。
三、程序介绍
- 程序核心为周期函数傅里叶展开的三维可视化。从时域、频域、相位等角度清晰地表现了傅里叶展开的过程。
- 程序以方波信号为例,用户可自主选择展开级数,从而得到不同精度的拟合函数。
- 下方三个图像更加清晰的展示了傅里叶级数展开后的物理意义,帮助用户理解傅里叶展开的核心内容。
- 利用rotate3d,用户可旋转图像,以从不同角度观察傅里叶展开细节。(三维图中,为使幅频特性更加清晰,对幅频特性的强度作了等比放大,实际大小可从下方离散幅度谱查看)
四、文件结构介绍
- main.m 为程序主框架
- ex_fly_f(绘制离散幅频图)、ex_fly_dt(绘制动态拟合图)、ex_fly_one(绘制三维图)、ex_fly_nh(绘制拟合图)、ex_fly_zz(绘制各次谐波叠加图) 为绘图核心程序。
- draw_all(执行绘图命令函数)、filesave(保存图像)、radio_one_Callback(radio_one的callback函数)、radio_two_Callback(radio_two的callback函数)、calledit(多数控件的callback函数) 为自定义辅助函数。
- ex_words 为存放程序背景的容器。
同知乎文章,均为同一作者
个人原创,转载请联系我本人。