想法来源
我在实验室里使用示波器观察实验数据的波形时,有时需要对实验数据进行傅里叶变换,观察其中的频谱成分。虽然有些示波器自带了数学分析工具,但是使用起来仍有不方便的地方,而且在后续的滤波时,仍需要对数据进行进一步的处理。
我在实验中,我从示波器上load的文件中,主要是两列数据,一列是时间数据,一列是强度数据,我利用matlab在对他们进行FFT分析时,主要是想获得如下数据
- 频率分辨率
- 各个频率分量
- 幅角
那么如何就我们从示波器中得到的文件数据去获得以上结果呢(这篇文章不是想说数学分析或者matlab命令的解释),也就是说如何就这些数据一次性从matlab代码中得出来呢?我们知道其实matlab的FFT命令得出来的结果其实可读性非常差,比如横坐标的数值代表的与纵坐标的数值代表的其实并没有对应到真实的物理量上,所以我的想法是编写一个matlab函数,可以很好地将结果与真实的物理量对应上,使其可读性高。
例子分析
那么先来看一下自己编写的函数带来的效果如何,这里并不强调其中的数学原理,主要用以在科研或者工程应用中的辅助分析为主。
首先我们有这样的一个波形
t=0:0.0001:5;
y=3*cos(2*pi*5*t)+7*cos(2*pi*8*t)-3*cos(2*pi*12*t)-5*cos(2*pi*15*t);
那么他所对应的图像如下图所示: