APP下载

基于LabVIEW的频域抽样定理实验

2019-10-08栗学丽

实验技术与管理 2019年8期
关键词:程序框图信号源点数

栗学丽

(山东大学 微电子学院,山东 济南 250101)

时域抽样定理和频域抽样定理是数字信号处理课程中的两大基本定理。相比于时域抽样定理的研究[1],频域抽样定理的研究相对较少[2],在教科书中只有简单提及且不易学生理解[3]。文献[4]和文献[5]分别给出对一个序列抽样32点和抽样16点、32点的编程验证示例,这些都是特殊点值;文献[6]的编程可以任意变化抽样点数,但只适用于抽样点数大于序列长度的情况。

LabVIEW 采用图形化编程,具备强大的信号处理、数据分析等功能,方便用户建立自己的虚拟仪器,使编程和使用过程都生动有趣[1]。目前基于LabVIEW的虚拟实验开发被广泛应用于工业、科研和教学等领域[7]。本文通过直接抽样法和离散傅里叶变换(DFT)法两种编程方法,实现基于 LabVIEW 的虚拟仿真实验来验证频域抽样定理,帮助学生避免编程误区、更好地理解和运用频域抽样定理。

1 频域抽样定理

离散信号的频谱仍然为连续信号,不便于计算机处理。对其进行频域抽样,可得到离散频谱,这对应于DFT过程。这个抽样点数必须满足一定的条件,才能从离散频谱的离散傅里叶逆变换(IDFT)中恢复出原始信号。频域抽样定理就是研究抽样点数所满足的条件。

如果序列x(n)的长度为M点,若对其频谱在上作等间隔抽样,共有N点(抽样点不包括ω=2π),得到只当抽样点数满足N≥M时,才能由X~(k)恢复出x(n),即否则将产生时域的混叠失真,不能由不失真地恢复出原序列x(n)。这就是频域抽样定理,理论证明见文献[8]。频域抽样定理是DFT和IDFT的理论基础,是利用DFT计算离散信号频谱的理论依据。频域抽样定理以及由它推导的内插公式可提供一种有用的滤波器结构和滤波器设计途径[9]。此外,它还应用于雷达信号的目标识别[10]和通信上的频分复用[11]。由此可见,频域抽样定理非常重要。本文基于LabVIEW设计了频域抽样定理虚拟仿真实验。

2 频域抽样定理实验界面设计

根据频域抽样定理,需对任意一个离散信号(序列)求得其频谱值再进行抽样,故需先设计一个任意离散信号。由傅里叶变换可知,若信号满足绝对可和,则这个信号可表示为正弦信号的线性组合。因此,正弦信号是基本信号,可选幅值、频率、相位、信号长度可调节的正弦信号作为基本测试信号,也可以由用户自行输入信号表达式作为测试信号。故在频域抽样定理实验界面的左侧设计可调测试信号源,分别为正弦信号和用户的公式输入信号,使信号源不再是单一的信号源。

为了更好地反映信号的时域和频域关系,可以用波形图直观表示信号的时域、频域值,帮助学生理解频域抽样定理的过程及其结果。还应有一个可调的抽样点数按钮,从而实现频域抽样定理在不同抽样点数下的过程变化。故在实验界面的右侧设计图形显示区,分别显示原始信号时域图、原始信号幅度谱、频域抽样后的幅度谱和恢复信号时域图。各图之间用箭头表示计算过程的流向,使数据显示直观和便于比较。用户可以通过改变频域抽样点数按钮,观察不同抽样点数下的仿真实验图形和验证频域抽样定理。

通过 LabVIEW 软件将所需显示的控件拖放到前面板,可以很方便地设计出具有虚拟仪器外观的交互式用户界面。这些控件的图标自动出现在 LabVIEW的程序框图上,就可通过连线实现编程。

3 频域抽样定理实验编程实现及验证

在 LabVIEW 的程序框图上进行编程,信号源部分由子程序signal_new.vi实现,其程序框图如图1所示。由于正弦信号的生成比较简单,故不再详述。用户通过公式输入信号,主要是通过解析公式节点(Parse Formula Node.vi)和已解析公式节点求值(Eval Parsed Formula Node.vi)等编程得到。

频域抽样定理的实现,关键是信号频谱各抽样点上频域值的获得。下面通过直接抽样法和DFT法分别实现频域抽样定理。

图1 信号源子程序signal_new.vi程序框图

3.1 直接抽样法

按照频域抽样定理,应先对长度为M点的时域信号x(n)进行离散时间傅里叶变换(Discrete-Time Fourier Transform,DTFT),得到其连续的频谱值再在其上等间隔抽样得到N个抽样点上的频谱值,对这些离散频谱抽样值做IDFT,得到恢复信号比较x(n)与x′(n)的差别。

直接抽样法程序框图如图2所示。由于当P点值远远大于信号长度M时,由DTFT得到的频谱可通过P点的DFT(FFT.vi)近似实现,这里P取大于M的100倍且是抽样点数N的整数倍的最小值,然后用降采样(单次)函数(Decimate (single shot).vi)实现等间隔抽样为间隔值),得到频谱上的各抽样点值,进而用 IDFT(Inverse FFT.vi)得到恢复信号x′(n)。通过改变频域抽样点数,观察x′(n)并与x(n)比较,以验证频域抽样定理。

图2 直接抽样法程序框图

这里,P值不能像文献[4-5]取1024定值,因为一个定值不能保证对所有的N值都能有整数的等间隔值,这也是许多做实验编程的学生常犯的错误。虽然程序并不报错,但仔细比较就会发现程序运行结果并不是对所有的N都正确。本程序中将P设定为大于M的 100倍,保证了P≫M,可由 DFT值得到 DTFT值。且P为N的倍数,为一个随N变化的值,又保证了T=P/N为整数,能实现等间隔抽样。这样,对不同的N值都能正确验证频域抽样定理。

通过这样编程实验,可以使学生更深刻地理解DTFT与DFT的关系,理解信号的频谱、等间隔抽样和频域抽样定理的含义。

3.2 DFT法

频域抽样值是通过对时域信号进行N点的 DFT得到的,再对它进行N点的IDFT得到恢复信号。有些学生参考文献[6]直接对长度为M点的x(n)做N点的DFT,其值作为N点等间隔频谱抽样值。为说明该方法是否对所有的N值都成立,分别对N≥M和N<M两种情况进行推导。

已知

(1)N≥M,将x(n)补零到N点,

(2)N<M,设

可知,当N≥M时,用x(n)的N点DFT可以得到N点频域抽样值;当N<M时,N点频域抽样值是对信号做N点DFT得到。

由此可见,当N≥M时,用x(n)的N点DFT得到N点频域抽样值是正确的;但是当N<M时,就不能这样做,而是应先计算出然后对它求N点的DFT值,才是正确的频域抽样值。所以正确的编程应按照上述原理。DFT法程序框图如图3所示,用分支结构分别编写N≥M和N<M的情况。通过重排数组维数、二维数组转置、数组元素相加等函数编程实现。

3.3 频域抽样定理验证

图 4给出N<M时用户公式输入信号用 DFT法得到结果的一个示例。对每种情况用直接抽样法和DFT法得到的结果是相同的,两种求解方法思路不同,但它们的实质是一致的,只是DFT法编程稍微复杂。通过调节不同的信号源和不同频域抽样点数,可以验证频域抽样定理的正确性。当N≥M时,频域抽样值恢复出的信号x′(n)比原信号x(n)多N-M个零点;当N<M时,x′(n)比x(n)长度短,发生了时域混叠失真。学生通过调节不同的信号源和不同的频域抽样点数,可直观地观察到原信号、信号频谱、频谱抽样值、恢复信号的图形,深刻理解频域抽样定理。实验编程过程学生也会将所学的知识融会贯通,将理论应用到实践,真正领会到理论的意义及作用[12]。

图3 DFT法程序框图

图4 N<M时一个示例界面

4 结语

利用 LabVIEW 设计并实现了频域抽样定理仿真实验,它具有交互性好、通用性强、方便比较、验证结果正确等特点,有利于学生深入理解和应用频域抽样定理。通过实验案例可见,理论推证是实验编程的基础,基于 LabVIEW 实现的参数可调的虚拟仿真实验又可直观地验证理论,调动学生探索的兴趣。理论和实验相辅相成,能更好地提高教学质量。

猜你喜欢

程序框图信号源点数
VR技术在船舶通信系统天线信号源驻波检测中的应用
“顺势而下”破解程序框图
算法与程序框图常考类型
程序框图问题的精彩交汇
一切以“大” 方向发展 20周年影音系统变迁史(信号源篇)
聚焦4K视频播放展望未来信号源发展
画点数
程序框图题盘点
多核并行的大点数FFT、IFFT设计
巧猜骰子