使用Matlab对存储信号进行谱分析是非常容易和灵活的,但是使用Matlab进行实时谱分析是非常困难的。首先让我们来讨论与非实时分析相关的话题。
如果我们想要看如何产生、分析或者使用各种类型的数据窗,探究Matlab函数诸如window、wintool、wvtool、sptool和fdatool。这些函数只产生一个类型的窗函数包括rectwin、bartlett、hamming、hann、kaiser和chebwin(它产生一个Dolph窗)。使用Matlab的这些函数的任一个帮助命令都能得到更多相应的细节。
在Matlab中,对于非实时谱分析,我们假定你已经有一个离散时域信号x[n]存储在你的计算机中,在Matlab工作台上表示为“x”。如果用命令“pwelch(x)”,使用的是Welch周期图方法,你将很快得到一个显示信号x[n]的功率谱图。例如,如图9.7所示,当“x”包含7kHz正弦信号的512个采样点,采样频率48kHz。单击help pwelch获得命令及其许多选项的信息。
你也应该为另一些谱分析的方法探究,如periodogram、pburg和pmusic这些函数。
显而易见,到目前为止我们在Matlab中展示的程序都不是实时的。如果你有适合于Matlab使用的数据采集工具包(可从美国MathWorks公司获得),就能够通过你的声卡引入一个信号并且实时计算信号的频谱。对于那些你获取数据使用的工具箱,我们已将其包含在本书CD中第9章“matlab”目录下。Matlab程序叫作specAn.m,是一个非常简单的实时频谱分析器。它使用PC的声卡输入获得信号,有一个默认的采样频率是8kHz,并且外观与图9.7所示的图形窗口类似,可以显示一个实时频谱图。(www.daowen.com)
为应用这个程序,复制specAn.m到你硬盘的某个路径,并且使这个路径在Matlab中是可见的。连接一个信号源,如一个CD播放器或者送话器到你PC的声卡上。在Matlab工作台中,输入命令specAn,并且按“回车键”在你的键盘上开始执行实时处理。为了结束这个实时处理过程,单击任意一个鼠标按钮在图形窗口的任何位置。如果你想使用其他的采样频率FS,作为一个输入变量来指定(如specAn(44100)的采样频率就是FS=44.1kHz),切记Matlab和你的声卡实际上对FS都有一定的限制。如果你没有数据采集工具箱,有一个Matlab函数叫作au-diorecorder(见本书第2章)也能通过声卡把采样值输入到Matlab的工作台上。然而,我们将发现这个函数和数据采集工具箱比起来(特别是对于实时的例子)功能是很有限的,因此这里没有使用它的程序。如果有可能的话,最好利用数据采集工具箱。
图9.7 在Matlab中来自于pwelch命令的频谱图(信号是7kHz正弦,并且采样率是FS=48kHz)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。