学习数字信号处理的诀窍:运用MATLAB

本公众号进行数字信号处理系列课程(信号与系统——数字信号处理——随机信号分析——现代数字信号处理)辅导,巩固基础与进一步提高相结合。

提倡“我为人人,人人为我”,欢迎广大朋友提供好的资料、文章、题解和学习经验,共同学习,共同进步。


考研专业课真题必练——数字信号处理
王仕奎编著,北京邮电大学出版社,2020

本书是数字信号处理硕士研究生入学考试的解题指导, 对博士生入学考试也有一定的参考价值. 同时, 作为数字信号处理这门课程学习的参考书, 对于学习该课程的学生, 对讲授该课程的教师的备课、习题讲解和测试, 也有很高的参考价值.

本书最初的一章对五套近年的数字信号处理考研真题进行了详细解答, 接着的八章分别介绍了数字信号处理的重要内容: 离散时间信号与系统、z变换与离散时间傅里叶变换、离散傅里叶变换、快速傅里叶变换、数字滤波器的基本结构、IIR滤波器的设计、FIR滤波器的设计、信号的抽取与插值——多抽样率数字信号处理基础. 每一章在提纲挈领地介绍基础知识点后, 辅之以大量的考研真题和著名教材习题的解答, 向学习者演示基础知识的灵活运用和答题技巧. 最后一章包含大量的各类高校考研(博)真题, 以给读者提供丰富的自我测试材料, 所有真题都包含参考解答, 解答有详有略, 以便学习者对照答案之用.


学习数字信号处理的诀窍:运用MATLAB
  • 采用数字信号处理的优势

  • 学好数字信号处理的三大诀窍之一——运用MATLAB

采用数字信号处理的优势

前面比较了数字信号相对于模拟信号的优点,如噪声不积累;差错可以控制;易于加密,安全性好;便于实现信息融合;便于采用大规模集成电路实现,等等。此外,采用数字信号处理还有一些重要的优势,即精度高、灵活性强、性能好和应用广等。

①数字信号系统相对模拟信号系统更容易实现高精度,并且并且较为稳定,因为数字系统不容易受外界温湿度等的影响,而模拟系统的工作状态常常受到外界环境的影响,发生参数的改变。

②数字信号系统处理更加灵活。模拟系统的硬件结构一旦形成,不容易添加、删除或者更改元器件,而数字系统很容易通过修改参数实现所需要的功能。当信号处理既可以用硬件实现、也可以用软件实现时,它们各有其优缺点:硬件实现速度快,但是不灵活;软件速度较慢,但是灵活性好。比如,手机的语音编解码将复杂的算法用集成电路实现,处理速度很快,因而能实现实时通信。

③性能好。数字系统可以实现严格的线性相位,这在某些对相位要求较高的场合如图像传输非常有利,因为相位的非线性会导致图像的畸变;数字系统可以方便地存储数据,因而可以实现非因果系统;数字系统可以利用信息论理论和语音、图像压缩理论,对数据进行压缩,大大降低数据传输率,压缩的依据有两个:一是熵压缩,利用空间和时间冗余度,二是利用人耳或人眼的感知特性。数字系统可以实现很精细的谱分析,而模拟系统则要粗糙得多,比如数字系统的谱分析精度可以达到千分之一赫兹,而模拟系统只能达到10赫兹。

④数字系统利用强大的储存和运算能力实现多维信号处理,如多维滤波、多维谱分析等,因而应用更加广泛。

教材中介绍了大量数字信号处理的应用,这里再介绍两个新颖的例子。将人体切片进行数字化,可以对人体进行三维重建,在医学教育和临床上都得到应用。对文物进行数字化,可以实现三维数字博物馆,更加方便游客欣赏,也方便文物的复制。

学好数字信号处理的三大诀窍之一——运用MATLAB

江志红在《深入浅出数字信号处理》中提出,理解数字信号处理有三把“万能”的钥匙,即①时域与频域的相互切换;②向量;③MATLAB软件。对这种提法,本人深以为然。下面首先谈MATLAB在数字信号处理中的应用。

很多学生一旦接触数字信号处理这门课,就被繁琐的公式推导吓倒了。高等数学固然公式很多,而数字信号处理公式之多,比高等数学有过之而无及,况且这些公式大都有一定的物理意义,要把公式及其物理意义紧密结合起来,因此就更加困难了。探索这门课程的更加友好的教学方法和更加有效的学习方法,显得迫在眉睫。将理论和实践加以结合,利用MATLAB实现各种理论和算法,运用于解决实际问题,是学好数字信号处理的一个诀窍。

MATLAB是一个面向科学计算与工程数值分析的软件,具有强大的仿真、计算和可视化能力。由于它是一种高级语言,因而编程非常简单,易学易用。将数字信号处理的学习和MATLAB工具紧密结合起来,学习才不会枯燥,因为繁琐的公式或算法都可以得到实在的结果,这些结果甚至是可以听到(语音、音频)或者看到(图像、频率谱、相位谱)的,那么必然加深对基本理论的理解。数字信号处理是一门工科性质非常强的课程,仅仅学一堆理论和公式而不能实现它,和学纯数学有什么区别呢?况且数学课程也在改革中,也在运用MATHEMATICA和MATLAB等工具进行计算、直观化,解决实际问题。

大多数字信号处理课程教学是把理论学习和MATLAB分开的,以理论课的学习为主,中间穿插一些实验或者课程设计环节。而我们会尝试将MATLAB贯穿于整个数字信号处理课程的学习,采取理论密切联系实际的方法。一个不那么直观的理论或公式,我们都试图将其直观起来,用MATLAB运行得到实际结果来说明问题。理论和实验是不分主次的,理论学得好的可以多花点时间做实验,而实验做得好的也可以多花点时间学习理论。

下面以圆周率的仿真计算为例,说明MATLAB的强大威力。下面是用面积法计算圆周率的仿真程序,整个程序只有一行:

N = 10000000; pi = 4*length(find(sum(rand(2, N).^2)< 1))/N

把上述命令输入MATLAB的命令窗口运行,即得到圆周率的近似值3.1417(重复试验可以得到不同的结果,但都是围绕3.1416而变动的,偶然性中包含着必然性)。上述各个命令的含义可以在以后的学习中逐步熟悉。

总之,学习数字信号处理这门课,一定要密切结合MATLAB,做到理论联系实际,理性认识和感性认识相结合。下面举一个有趣的例子来结束本节。

1  有高矮各不相同的100名同学,随机地排成一个10×10的方阵。每行取最高的一个同学,一共10个高个子,记为集合T;每列取最矮的一个同学,一共10个矮个子,记为集合S。问题:(1) T中最矮的同学(记为T[S])和S中最高的同学(记为S[T])相比谁更高?(2) 如果T[S]和S[T]一样高(即为同一个人),求其概率为多少?

分四种情况讨论:T[S]和S[T]既不在同一行,也不在同一列;T[S]和S[T]在同一行;T[S]和S[T]在同一列;T[S]和S[T]为同一个人。容易知道,前三种情形,都是高个子中最矮的比矮个子中最高的要高,那么在100个人随机排列的情况下,T[S]和S[T]为同一个人的概率多大呢?只要做一下试验,只要试验的次数足够高,就可以得到充分准确的概率。如下代码进行10,000,000次试验,统计T[S]和S[T]为同一个人的频率。

clc,clear all;

tic

jj =0;

for ii= 1:10000000

A = randperm(100);

B = reshape(A, 10, 10);

C1 = max(B');

D1 = min(C1);

C2 = min(B);

D2 = max(C2);

if (D1-D2) <= eps

jj = jj + 1;

end

end

rate =jj/10000000

time =toc

在Intel Celeron CPU G1820(2.70GHz)上运行结果为:

rate =

1.0990e-004

time =

169.1524

即T[S]和S[T]为同一个人的概率约为万分之一点一,在任一次试验中,几乎可以肯定地说,高个子中的矮个子比矮个子中的高个子高。同时,10,000,000次重复试验所花的机器时间约为169秒,即不到3分钟。

(0)

相关推荐