数字信号处理演示系统
1、GUI界面设计
用户界面(GUI)是由窗口、菜单、图标、按键、对话框及文本等多种图形元素共同构成的一种人机交互界面,在Matlab中常用的GUI设计工具包括Guide和App designer两种类型,在这里我们推荐采用具有面向对象编程特性且设计相对简单的App designer工具来进行界面开发。该软件内置了丰富的标准用户界面组件库,在开发过程中开发者可通过拖拽至画布并直接配置布局结构的方式快速搭建起所需的界面框架;随后在各个组件上定义好所需的事件处理逻辑即可完成功能模块的设计工作;其中每一个图形元素都对应一个唯一的UI对象属性,在具体操作过程中开发者可以通过修改对象标识符即可实现对该组件的不同引用方式;同时通过设置各属性参数值还可以灵活控制各个图形元素的具体外观样式以及部分自带功能行为特征。
2、信号生成
(1)多频正弦(测试信号)
通过以下所述的for循环结构可以生成多频正弦信号,便于调节生成的频率组成。允许用户设定采样频率Fs和采样点数N,默认值分别为100Hz和256。
(2)数字音频
将voice.wav设为默认的音频输入源,并调用audioread()函数获取对应的音频信号。根据以下条件判断是否添加不同类型的噪声:白噪声、单频噪声、高斯噪声和多频 noise。通过audiowrite()函数将处理过的带有 noise 的 signal 保存到 voice1.wav 中。以便后续使用 sound() 函数播放加过 noise 的 audio 文件。
3、频谱分析
对所给信号进行快速傅里叶变换,在实现过程中通常表示为Y = fft(X, N),其中选择N值时应优先考虑使其成为2的幂数以提高计算效率。随后绘制出Y的幅频特性和相频特性曲线图,并完成对信号在频域中的分析过程
4、滤波器设计
(1)巴特沃斯低通模拟滤波器设计原理
Butterworth analog low-pass filters' magnitude squared response \left| H_{a}(j\Omega) \right|^{2} is commonly described by the following expression.
\left| H_{a}(j\Omega) \right|^{2} = \frac{1}{1 + \left( \frac{\Omega}{\Omega_{c}} \right)^{2N}}
式中,N称为滤波器的阶数,\Omega_{c}是3dB截止频率。
阶数N的大小显著影响着通频特性的平滑程度与过渡段、阻频特性的衰减速度;这些参数由Ω_p、α_p、Ω_s、α_s等技术参数共同决定,则其值可表示为:
N 是由两部分组成的分数形式的计算过程得出的结果值。其中分子部分为\lg\left(\frac{10^{\frac{\alpha}{10}}-1}{\Omega_{s}/\Omega_{p}}\right)与分母部分\lg\left(\frac{\Omega_{s}}{\Omega_{p}}\right)之间的比值关系所决定。
计算所得的N值可能带有小数部分,则需取其上界即不小于该值的第一个整数值以满足条件要求;若技术指标未作规定则可采用下述公式计算截止频率Ω_c
\Omega_{c} = \Omega_{p}\left( 10^{0.1\alpha_{p}} - 1 \right)^{- \frac{1}{2N}}
或
\Omega_{c} = \Omega_{s}\left( 10^{0.1\alpha_{s}} - 1 \right)^{- \frac{1}{2N}}
以s替换j\Omega,将幅度平方函数\left| H_{a}(j\Omega) \right|^{2}写成s的函数:
H_{a}(s)H_{a}( - s) = \frac{1}{1 + \left( \frac{s}{{j\Omega}_{c}} \right)^{2N}}
由s = \sigma + j\Omega表示的复变量s中包含幅度平方函数的所有极点信息,在频域分析中具有重要价值;其中各个极点s_k则由下式给出:
s_{k} = ( - 1)^{\frac{1}{2N}}\left( {j\Omega}_{c} \right) = \Omega_{c}e^{j\pi\left( \frac{1}{2} + \frac{2k + 1}{2N} \right)}
式中,k=0,1,2,…,2N-1。
以确保滤波器具有因果稳定性,在2N个极点中选择位于s平面左半平面的N个极点来构建传递函数 H_{a}(s) 其数学表达式即为此处所展示的形式。
H_{a}(s) = \frac{\Omega_{c}^{N}}{\prod_{k = 0}^{N - 1}\left( s - s_{k} \right)}
从s平面变换到z平面
s = \frac{2}{T}\frac{1 - z^{- 1}}{1 + z^{- 1}}
得
H(z) = H_{a}(s)\left. \ \right|_{s = \frac{2}{T}\frac{1 - z^{- 1}}{1 + z^{- 1}}}
然后根据差分方程计算滤波结果
y(n) = \sum_{k = 0}^{\infty}{h(k)x(n - k)} = - \sum_{k = 1}^{M}a_{k}y(n - k) + \sum_{k = 0}^{N}b_{k}x(n - k)
(2)用到的Matlab工具箱函数:
- [N,wc]=buttord(wp,ws,ap,as)
 
确定巴特沃斯数字滤波器的阶数N及其3dB截止频率wc。在调用butter函数时,请提供参数wp和ws作为归一化值。其中0≤wp≤1表示通带边界频率(对应模拟频率Fs/2),0≤ws≤1表示阻带边界频率(对应模拟频率Fs/2),而1则代表数字频率π(对应的模拟角频率为Fs/2)。N和wc将作为butter函数所需的参数输入。
- [B,A]=butter(N,wc,’ftype’)
 
涉及计算N阶巴特沃斯数字滤波器系统函数分子和分母多项式的系数向量B和A。当ftey参数设置为high值时,则会设计具有3dB截止频率wc的高通滤波特性;而当ftey参数设置为low值(缺省情况下则采用low值)时,则会设计具有3dB截止频率wc的标准低通滤波特性;若ftey参数设置为stop值,则会设计具有3dB截止频率wc的带阻特性,在这种情况下 wc 被定义为其输入的一个二元向量 [wcl, wcu] ,其中 wcl 和 wcu 分别对应于该带阻特性在通带内的下截止频率和上截止频率;而若未指定任何类型参数,则默认采用的是带有由频段 [wcl, wcu] 所限定通带范围的带通特性
[N,wso]=cheb2ord(wp,ws,ap,as)
[B,A]=cheby2(N,as,wso,’ftype’)
[N,wpo]=ellipord(wp,ws,ap,as)
[B,A]=ellip(N,ap,wpo,’ftype’)
Hn=fir1(M,wc,’ftype’,window)
可以指定指定的窗口函数向量window,默认情况下使用哈明窗口hamming(M+1),也可以选择使用矩形窗口boxcar(M+1)、三角形窗口bartlett(M+1)、汉宁窗口hanning(M+1)、布莱克曼窗口blackman(M+1),以及凯塞-贝塞尔窗口kaiser(Beta, M),其中Beta为参数设置
5、输出信号分析
利用所设计的滤波器对信号进行滤波操作,并对其进行时域特征分析、频率响应特性和相位特性的研究;同时能够实现对经过处理后的音频信号的播放。
