在算法仿真中,由于是全精度的计算,曲线往往比较理想。但在把算法写入硬件时,由于资源限制,必须要进行量化。由此带来的误差,将在本节用零极点,以及下一节用频率响应进行演示。
系统为二阶的数字滤波器,方程为:
H(z) = b / a
其中,b = 0.05,a = 1 + 1.7*z^-1 + 0.745*z^-2
N为量化位数,可以任意设置。N越多,误差越小,当然消耗的硬件资源也会随之增加。
下面是量化bit为4位和8位时的情况。可以看到,当量化bit为4时,系统严重失真。极点跑到了单位圆外面,导致频率响应不存在了;而8bit量化时,量化后的性能接近量化前的理想情况。
代码如下:
import mat