现代法谱估计(4)Burg算法MATLAB及Python实现
原理
原博客是用word编辑成的,插入了很多Mathtype公式,而****不支持此格式,转换格式后出现了很多麻烦和错误,故此博客直接放了截图,请见谅。
程序和结果
MATLAB
程序:
结果:
Python
程序:
结果:
分析
由上图可见,我给程序输入的N为256,信号中f1=0.1,f2=0.13,为了看得明显,我把f1幅值调大了,在图中我们可以看到对应的位置出现了峰值,寻峰得到频率估计均为0.1和0.3左右。程序中我取的 的范围是0到π弧度,所以也只是画出了0.1到0.5的频率范围。利用寻峰函数findpeaks来得出峰值对应的横坐标(Python中是自己写了一个寻峰估计频率的方法),程序中将所有的峰值及其索引分别放入到两个数组中,且根据峰值大小降序排列,确定最大的两个峰值和其索引位置,然后由索引位置除以2N (我写出的程序中取的 的范围是0到π弧度,也即单位圆上半部分,频率范围对应为0-0.5,而对应的序列长度为N,因此根据比例关系可知,索引值/N=频率值/0.5也即,频率值=索引值/2N,和上面的使用freqz函数的结果相同)。