基于卷积及零极点与幅频特性关系的动态界面演示
2018-03-02孙会苹张睿朱桐萱
孙会苹 张睿 朱桐萱
摘要:本文基于MATLAB将卷积过程及零极矢量与幅频特性关系的问题利用GUI界面动态显示出来。首先介绍了线性卷积、循环卷积、零极矢量与幅频特性的动态演示实现,再通过MATLAB的底层编码,利用基本控件实现GUI界面设计。此设计可直接应用于数字信号处理的教学演示中。
关键词:数字信号处理;MATLAB;动态演示;GUI界面设计
中图分类号:TP391.9 文献标识码:A 文章编号:1007-9416(2018)12-0088-02
MATLAB的信号处理工具提供了很多数字信号处理的需要的函数及解决方法,本文即是利用MATLAB语言编程设计一个动态演示界面,该界面可演示线性卷积及循环卷积实现过程,也可实现零极矢量对幅频特性关系的动态演示。
1 MATLAB时域卷积的动态演示实现
1.1 时域线性卷积的动态演示实现
线性卷积(linear convolution)在时域描述线性系统输入和输出关系的一种运算,对于线性时不变离散系统来说,若序列x(n)是系统的输入,h(n)是系统在单位脉冲作用下的单位脉冲响应,则由于输入序列x(n)可表示为一系列脉冲的线性组合,y(n)即是x(n)与h(n)的卷积。,若x(n)长度为M,h(n)长度为N,则y(n)的长度为L=M+N-1。
线性卷积的实现步骤可简单概述为:换元、翻转、移位、相乘、相加。MATLAB中有conv函数可直接调用,为了更好地理解卷积运算,自己编写程序,实现其运算并观测每一个实现步骤。
其关键语句如下:
M=length(xn),N=length(hn)
m=[-(M-1):M+N-2]
hm=[zeros(1,M-1),hn,zeros(1,M-1)]
xmfy=[fliplr(xn),zeros(1,M+N-2)]
yn(M+n)=sum(xmfy.*hm)
1.2 时域循环卷积动态演示实现
循环卷积(circular convolution)是周期卷积的一种。循环卷积的长度大于两序列线性卷积长度时,可用线性卷积计算。
1.2.1 循环卷积计算步骤
(1)经周期延拓得到,经反转,取主值区间得到。
(2)循环移位得,n>0,循环右移。
(3)n取0,1,....,N-1不同的值,N=max(N1,N2),对应的序列相乘相加得到结果。
1.2.2 有限长序列循环卷积矩阵形式
上式中右边第一个矩阵称为x(n)的L点循环矩阵,它的特点是:(1)第一行是x(n)的L点循环倒相。x(0)不动,后面其它反转180°放在他的后面。(2)第二行是第一行向右循环移一位。(3)第三行是第二行向右循环移一位;依次类推。
关键语句如下:
M=length(xn),N=length(hn),L=input(‘L=)
xm=[xn,zeros(1,L-M)],hm=[hn,zeros(1,L-N)]
ycn=zeros(1,L);
for n=0:L-1
xn_m=xm(mod(n-m,L)+1);
ycn(n+1)=sum(xn_m.*hm);
pause(0.5);
End
2 数字系统的零极点位置与幅频特性关系的动态演示
2.1 系统函数的零极点与幅频特性关系
系统函数:
,令
w由0到2π,即零/极矢量的终端点沿单位圆逆时针方向旋转一周,可由从零/极矢量长度的变化情况估算出系统的幅频特性。
2.2 零极矢量与幅频特性关系动态演示实现过程
输入分子分母系数,在零极点图的基础上显示零极矢量的动态变化过程,画出系统函数的幅频特性图。关键语句如下:
[zs,ps,k]=tf2zp(A,B);
e=real(z(n));f=imag(z(n));
x=real(p(n));y=imag(p(n));
plot([e,cos(k*pi/10)],[f,sin(k*pi/10)],'-');
plot([x,cos(k*pi/10)],[y,sin(k*pi/10)],'-');
zplane(A,B);
[Hk,w]=freqz(A,B,'whole');
plot(w/pi,abs(Hk)/max(abs(Hk)));
3 GUI界面設计
(1)例线性卷积可编辑文本框输入序列的捕捉,点击鼠标右键,选择Callback:在function edit1_Callback(hObject, eventdata, handles)下加入:
全局变量的调用global xn;
将字符串转换为数值xn=str2num(get(hObject,'String'));
卷积长度文本框L变为L=str2double(get(hObject,'String'));
(2)按钮及坐标轴的设置,第一,按钮设置,在function pushbutton1_Callback(hObject, eventdata, handles)下,引用全局变量global xn;global hn,填写基础程序;第二,坐标轴设置:a)axes(handles.axes1);stem(m,xm,'r');b)stem(handles.axes3,m,xmfy,'b.')
(3)含輸入的输出界面显示如图1所示。
4 结语
本文介绍方法可用于卷积运算、系统零极点与频率特征关系等方面,作为系统运用于教学过程中去,可使学生更好地理解运算过程,提高了数字信号处理的教学质量,也推动了理论教学的可视化。
参考文献
[1]孙明,邓羽.提高“信号处理原理”课程教学效果的实践[J].南京:电气电子教学学报,2004,26(6):116-118.
[2]张恒,袁晓,汤韩杰,帅晓飞.数字系统零极点与频率特征关系的动画界面设计.电气电子教学学报,2006,28(03):32.
[3]杨永双,韩雪琴.基于Matlab的时域卷积的动态演示的实现.计算机与信息技术,2007,(3):38-39.
Dynamic Interface Demonstration Based on Convolution and the Relation Between Zero-Pole and Amplitude-Frequency Characteristics
SUN Hui-ping,ZHANG Run,ZHU Tong-xuan
(School of Electronic Information Engineering, Shandong University of Science and Technology,Qingdao Shandong 266000)
Abstract:In this paper, the convolution process and the relationship between zero-pole vector and amplitude-frequency characteristics are dynamically displayed using the GUI interface based on MATLAB. Firstly, the dynamic demonstration realization of linear convolution, cyclic convolution, zero-pole vector and amplitude-frequency characteristics is introduced separately. Then through the bottom coding of MATLAB, GUI interface design is realized by using basic controls This design can be directly applied to the teaching demonstration of digital signal processing .
Key words:digital signal processing; MATLAB; dynamic demonstration; GUI interface design