数字信号处理_胡广书(第三版)_随书光盘
关于光盘的使用说明
matlab难还是c语言难
本光盘共包含六个子目录,其中三个是DSP_FORTRAN, DSP_C和DSP_MATLAB,另外三个是有关习题所需要的数据或文献。DSP_FORTRAN和DSP_C各含有约40个信号处理的子程序,概括了书中所涉及到的绝大部分算法。程序分别由FORTRAN语言和C语言编写(MA模型、ARMA模型及最小方差谱估计三个算法只给出了用C语言编写的程序, 没有给出相应的FORTRAN子程序),并在PC机上调试通过。编译环境是FORTRAN77 V5. 10和TURBO C2. 0。DSP_MATLAB含有近120多个用MATLAB编写的信号处理程序,它们是本书各个章节的大部分例题,使用的是MATLAB6.1。
FORTRAN子程序名称的长度全都是6位,扩展名为 .for,C语言子程序的名称全部是7位,由相应的FORTRAN子程序在其名称前加字母m而形成,并将扩展名改为 .c。为了方便读者的使
用,光盘中还给出了调用FORTRAN子程序的简单主程序。读者只需将此主程序和主程序指定的子程序作编译、连接和运行,即可得出相应的结果。FORTRAN主程序的名称为7位或8位,它是在原FORTRAN子程序前加字母h所构成的,扩展名仍是 .for。h后面的一个数(如果有的话)表示该程序是相应子程序的第几个主程序。例如,子程序desiir.for是用来设计IIR滤波器的FORTRAN子程序,对应的C程序是mdesiir.c,调用desiir.for的第一个主程序是h1desiir.for(设计低通IIR DF),依此类推。
用MATLAB编写的程序的名称由“exa”开头,接下来是所在的章、节及例题的序号,如exa010101,指的是第1章第1节(即1.1节)的第1个例题,即例1.1.1。如果该程序是为了说明某一个m文件的应用,则在上述名称的后面跟一个下划线,再在后面加上所说明的MATLAB文件的名称,如exa011001_rand,即是例1.10.1,该例用来说明rand.m文件的应用。应该说明的是,这些MATLAB程序不是像所附的FORTRAN和C程序那样作为一个个子程序应用,而是用来说明书上的例题及各个m文件的应用。
用FORTRAN和C语言编写的每一个子程序的功能及调用时各个参数的含义已在程序的开头作了较为详细的说明,此处不再赘述。所附程序中,绝大多数都是作者和其研究生编写的,也有少量是参考国外已公开发表的杂志和教科书,如经典的FFT和REMEZ算法等。
下面给出的是用FORTRAN语言和C语言编写的程序的名称、功能以及有关问题的说明,程序按字母顺序排列。
1.aftodf.for,maftodf.c
将模拟滤波器转变为数字滤波器。
2.ampres.for,mampres.c
由得到幅频响应。系统函数由下式给出:
(A.1)
若,则为一全极点IIR系统,若,则为FIR系统。在以下程序中,凡涉及到系统,系统函数都按(A.1)式给出,不再一一说明。
3.arburg.for(harburg.for),marburg.c
用Burg算法求AR模型的参数。
4.ar1psd.for,mar1psd.c
由AR模型参数得到功率谱。
5.aryuwa.for(haryuwa.for),maryuwa.c
用Levinson算法求解Yule-Walker方程以得到阶AR模型的参数。
6.biline.for,mbiline.c
实现双线性Z变换。
7.butwcf.for,mbutwcf.c
设计巴特沃斯模拟低通滤波器,求出转移函数。
8.chebsh.for,mchebsh.c
设计切比雪夫I型模拟低通滤波器,求出转移函数。
9.cmpdft.for(hcmpdft.for),mcmpdft.c
直接由定义求点复序列的DFT。
10.cmpfft.for(hcmpfft.for),mcmpfft.c
利用经典的Cooley-Tukey基2算法求复序列的DFT。
11.convo1.for(hconvo1.for),mconvo1.c
直接按定义求序列的线性卷积。
12.convo2.for(hconvo2.for),mcnvo2.c
利用DFT的卷积性质求两个复序列的线性卷积。
13.corpsd.for(hcorpsd.for),mcorpsd.c
用Blackman-Tukey法(自相关法)对信号作功率谱估计。
14.corre1.for(hcorre1.for),mcorre1.c
直接按定义计算的互相关函数,若,则求出的是自相关,为复序列。
15.corre2.for(hcorre2.for),mcorre2.c
用FFT实现相关函数快速估计。
16.cztfft.for(hcztfft.for),mcztfft.c
实现Chirp Z变换算法。
17.decint.for(h1decint.for,h2decint.for,h3decint.for),mdecint.c
对给定数据作倍的抽样率转换。
18.defir1.for(h1defir1.for,h4defir1.for),mdefir1.c
利用窗函数法设计FIR滤波器,给出其抽样响应。程序中调用了子程序window。
19.defir2.for(h1defir2.for,h4defir2.for),mdefir2.c
用频率抽样法设计FIR滤波器。
20.defir3.for(h1defir3.for,h2defir3.for,h3defir3.for),mdefir3.c
用切比雪夫最佳一致逼近法设计FIR滤波器,调用子程序remez1。
注意:以上FIR滤波器设计的三个程序中,滤波器的长度应取奇数。
21.desiir.for(h1desiir.for,h2desiir.for,h7desiir.for,h8desiir.for),mdesiir.c
利用双线性Z变换设计巴特沃斯和切比雪夫I型IIR数字滤波器,包括低通、高通、带通、带阻四种形式。使用者只需指定通带、阻带的边缘实际频率及相应的衰减,便可输出数字滤波器的级联形式的各子系统分子、分母的系数,并输出其幅频和相频响应。程序中调用了子程序orderb,butwcf,chebsh,aftodf,iirres等。
22.firres.for(hfirres.for),mfirres.c
求FIR系统的频率响应。
23.fitout.for(hfitout.for),mfitout.c
求IIR系统对的输出,若,则。
24.iirres.for(hiirres.for),miirres.c
求IIR系统的频率响应。
25.lattic.for(hlattic.for),mlattic.c
将全零系统、全极系统及极零系统的直接实现形式转化为Lattic结构。注意,当为FIR系统时,应把它视为全极系统。
26.marmach.c(主程序:wmarmach.c)
用Cholesky分解求ARMA模型的参数并作谱估计。
27.mcholsk.c
实现矩阵的Cholesky分解。
28.mmayuwa.c(主程序:wmmayuwa.c)
求MA模型的参数并估计功率谱。
29.mmvseps.c(主程序:wmmvseps.c)
用最小方差法估计序列的功率谱。
30.orderb.for,morderb.c
计算归一化巴特沃斯或切比雪夫I型模拟低通滤波器所需的阶次。
31.perpsd.for(h1perpsd.for,h3perpsd.for),mperpsd.c
用Welch平均法对信号作功率谱估计。
32.phares.for,mphares.c
得到的相频响应,程序中调用了子程序unwrap。
33.prgfft.for(hprgfft.for),mprgfft.c
实现输入、输出都为少数点时的FFT Pruning算法。
34.psplot.for,mpsplot.c
在归一化频率轴上绘出归一化的功率谱曲线。
35.random.for(hrandom.for),mrandom.c
用来产生均匀分布或高斯分布的伪随机数(近似白噪声),它们可具有不同的均值和方差。
36.relfft.for(hrelfft.for),mrelfft.c
利用分裂基算法求实序列的DFT,的虚部赋值为零。
37.remez1.for,mremez1.c
用REMEZ算法求交错点组。
38.splfft.for(hsplfft.for),msplfft.c
利用分裂基算法求复序列的DFT。
39.unwrap.for,munwrap.c
将得到的解卷绕,得到无跳变的相频特性。
40.window.for(hwindow.for),mwindow.c
计算七类窗函数并给出归一化对数幅频曲线。
注:本书按13.5节的方法产生了一个实验数据test,该数据是128点复序列,用于功率谱估计,并分别放在三个子目录中。在FORTRAN和C的子目录中,该数据文件的名字是test.dat,在MATLAB的子目录中,其名字是test.mat。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论