第2章 DSP芯片结构和CPU外围电路

DSP芯片结构

TMS320C55x处理器的特点

特征 优点
一个32位×16指令缓冲队列 缓冲变长指令并完成有效的块重复操作
两个17位×17位的乘法累加器 在一个单周期执行双乘法累加操作
一个40位算术逻辑单元(ALU) 实现高精度算术和逻辑操作
一个40位桶形移位寄存器 能够将一个40位的计算结果最高左移31位或向右移32位
1个16位算术逻辑单元(ALU) 对主ALU并行完成简单的算术操作
4个40位的累加器 保留计算结果,减少对存储单元的访问
12条独立总线,其中包括:
3条读数据总线
2条写数据总线
5条数据地址总线
1条读程序总线
1条程序地址总线
为各种计算单元并行提供将要处理的指令和操作数——利用C55x的并行机制的优点
用户可配置IDLE域 改进了低功耗电源管理的灵活性

TMS320c55x CPU单元

TMS320C55x DSP CPU Reference Guide (Rev. F) (ti.com.cn)

CPU框图

如图所示, C55x有1条32位的程序数据总线(PB), 5条16位数据总线(BB、CB、 DB、 EB、 FB)和1条24位的程序地址总线及5条23位的数据地址总线, 这些总线分别与CPU相连。
总线通过存储器接口单元(M)与外部程序总线和数据总线相连, 实现CPU对外部存储器的访问。这种并行的多总线结构, 使CPU能在1个CPU周期内完成1次 32位程序代码读、 3次 16位数据读和2次 16位数据写
C55x根据功能的不同将CPU分为 4 个单元, 即指令缓冲单元 (I)、 程序流程单元 (P)、 地址流程单元 (A) 和数据计算单元 (D)。

阅读全文 »

运行平台:Windows11 ;版本:MWORKS.Syslab 2024b

以下内容基于实验3~7中的MATLAB代码移植到Syslab平台过程中总结的问题。


Syslab无法读取音频解决思路

一开始是想直接将matlab里的audioread函数复制过来用,但是发现他的函数封装层层嵌套,比如套了readaudio()等,而进一步查看这个函数则发现无法查看。毕竟这是因为Mathwork的吃饭的家伙事儿,怎么可能让人随便获取。MATLAB加密自己的部分函数文件,对其库的移植难度极大。

然后想到查看同元的库dsp_AudioFileReader,也随即发现他的函数都是调用API,在本地貌似无法获取。

解决思路有以下三种:

1. 将.m文件移植到.jl文件中

​ 在Julia中可以使用同元官方提供的函数库处理音频信号,但移植过程中需注意二者语法差异。

与MATLAB的显著差异 | Syslab使用手册

2. 在.m文件中调用.jl函数

​ 同元syslab缺少音频读取函数,可以调用Julia函数来读取。

高阶 - M 语言调用 Julia 函数 | Syslab使用手册

3. 在.m文件调用c/c#函数库

​ 可以使用网上开源的读取 .wav 文件的函数。但是没有接触过接口调用不是很了解。

综合考虑,最终采用方法 1. 将.m文件移植到.jl文件中

实现代码如下:

1
2
3
4
5
using TySignalProcessing
using TyPlot
afr = dsp_AudioFileReader(Filename = "motherland.wav", SamplesPerFrame = 80000);
xn = step(afr);
plot(xn);

操作符相关差异

主要还是一些对数组的操作和运算上,Julia相对matlab会麻烦一些。详情可见:与 MATLAB 的显著差异

阅读全文 »

实验目的

  1. 加深对窗函数法设计 FIR 数字滤波器的基本原理的理解。

  2. 学习用 Matlab 语言的窗函数法编写设计 FIR 数字滤波器的程序。

  3. 了解 Matlab 语言有关窗函数法设计 FIR 数字滤波器的常用函数用法。

  4. 掌握 FIR 滤波器的快速卷积实现原理。

  5. 不同滤波器的设计方法具有不同的优缺点,因此要全面、客观看待可能面对或出现的问题。

实验原理

用窗函数法设计FIR 数字滤波器

FIR数字滤波器的系统函数为

这个公式也可以看成是离散 LSI 系统的系统函数

分母 为 1, 其余 全都为 0时的一个特例。由于极点全部集中在零点, 稳定和线性相位特性是 FIR滤波器的突出优点, 因此在实际中广泛使用。

FIR 滤波器的设计任务是选择有限长度的 , 使传输函数满足技术要求。主要设计方法有窗函数法、频率采样法和切比雪夫等波纹逼近法等。本实验主要介绍窗函数法。

用窗函数法设计 FIR 数字滤波器的基本步骤如下:

(1) 根据过渡带和阻带衰减指标选择窗函数的类型, 估算滤波器的阶数

(2) 由数字滤波器的理想频率响应 求出其单位冲激响应 。 可用自定义函数 实现理想数字低通滤波器频率响应的求解。程序清单如下:

language
1
2
3
4
5
6
7
8
function hd = ideal_lp(wc, N) % 点 0 到 N-1 之间的理想脉冲响应
% wc = 截止频率 (弧度)
% N = 理想滤波器的长度
tao = (N-1)/2;
n = [0:(N-1)];
m = n - tao + eps; % 加一个小数以避免 0 作除数
hd = sin(wc * m) ./ (pi * m);
end

其它选频滤波器可以由低通频响特性合成。如一个通带在 之间的带通滤波器在给定 值的条件下,可以用下列程序实现:

1
Hd = ideal_lp(wc2, N) - ideal_lp(wc1, N);

(3) 计算数字滤波器的单位冲激响应

(4) 检查设计的滤波器是否满足技术指标。

如果设计的滤波器不满足技术指标,则需要重新选择或调整窗函数的类型,估算滤波器的阶数。再重复前面的四个步骤,直到满足指标。

常用的窗函数有矩形窗、三角形窗、汉宁窗、哈明窗、切比雪夫窗、布莱克曼窗、凯塞窗等,Matlab均有相应的函数可以调用。另外,MATLAB 信号处理工具箱还提供了 'firl'函数,可以用于窗函数法设计 FIR 滤波器。

由于第一类线性相位滤波器 (类型 I)能进行低通、高通、带通、带阻滤波器的设计,因此,本实验所有滤波器均采用第一类线性相位滤波器。

各种窗函数特性的比较

窗函数 旁瓣峰值/dB 近似过渡带宽 精确过渡带宽 阻带最小衰减/dB
矩形窗 -13 21
三角形窗 -25 25
汉宁窗 -31 44
哈明窗 -41 53
布莱克曼窗 -57 74
凯塞窗 -57 80

信号的整数倍零值内插

是连续信号 的采样序列,其采样频率为 是采样间隔。如果将其采样频率降低到原来的 为大于 1 的整数,称为抽取因子),最简单的方法是对 个点抽取 1 点,组成一个新的序列 。由于 的采样间隔 ,除非抽取后仍能满足采样定理,否则会引起频谱混叠现象。信号抽取前后的频谱关系见教材第 8 章的 8.2 节。为了避免抽取后的频率混叠,在抽取前先采用一个抗混叠低通滤波器对信号滤波,把信号的频带限制在某个频率以下。

抗混叠滤波器的系统函数为:

阅读全文 »

使用latex撰写实验报告

各位CQUPTers,是否还因为写实验报告而感到枯燥?还在为word排版而感到苦恼吗?快来试试用latex排版实验报告吧! 学会latex益处良多,大到毕业论文、竞赛论文,小到个人简历、日常作业笔记,都能轻松应对。学会使用latex不仅不需要担心格式问题,漂亮的格式也能让文章更加加分。

效果图

首先上结论。成果展示,有图有真相。

使用latex排版出来的报告公式精美,代码格式优雅,图片与正文交叉引用。

效果图

如果大家有需要的话,未来我也可以开源部分报告的latex源码,供大家参考学习。

需要具备哪些东西/能力?

  • step 1)Latex环境安装——texlive清华镜像源下载安装即可。

  • step 2) 舒适的latex开发环境——使用Vscode(Texstudio也可以,但是没有VScode那么丰富的插件库),下载安装LaTex Workshop插件。

  • step 3 ) 设置Vscode用户配置文件(User Settings(JSON))——网上的教程有很多坑,文末会附上我的配置文件供大家参考。我的配置文件是在我的电脑上完全能work,大家用的时候需要看清注释修改几个路径。

  • step 4 ) 从一个好用的模板开始学起latex基本语法——推荐从我编写的CQUPT_Courese_Report用起(王婆卖瓜)

​ ......

鉴于以上每一个步骤,根据关键词网上一搜就是一大把教程,我就不重复赘述了。所以还请大家自行搜索。

我更多的会关注具体使用过程中的小技巧,整理整理日后继续分享。

以上操作一天即可顺利入门latex用于撰写实验报告,接下来便是不断地尝试和探索更加丰富和优美的排版了。

推荐必备工具:公式编辑器(Axmath、Mathtype等)、表格转latex(excel2latex)、Vscode插件(easy snippet)、各路AI工具等。

VScode配置文件

阅读全文 »

实验目的

  1. 学会运用Matlab 求离散时间信号的有理函数z 变换的部分分式展开;

  2. 学会运用Matlab 分析离散时间系统的系统函数的零极点;

  3. 学会运用Matlab 分析系统函数的零极点分布与其时域特性的关系;

  4. 学会运用Matlab 进行离散时间系统的频率特性分析。

实验原理

有理函数z 变换的部分分式展开

如果信号的z域表示式 \(X(z)\) 是有理函数,设 \(X(z)\) 的有理分式表示为 \[X(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2} + \cdots + b_m z^{-m}}{1 + a_1 z^{-1} + a_2 z^{-2} + \cdots + a_n z^{-n}} = \frac{B(z)}{A(z)}\]

Matlab 信号处理工具箱提供了一个对 \(X(z)\) 进行部分分式展开的函数'residuez',其语句格式为 \[[R, P, K] = \text{residuez}(B, A)\] 其中,\(B, A\) 分别表示 \(X(z)\) 的分子与分母多项式的系数向量;\(R\)为部分分式的系数向量;\(P\) 为极点向量;\(K\) 为多项式的系数。若 \(X(z)\)为有理真分式,则 \(K\) 为零。

系统函数的零极点分析

离散时间系统的系统函数定义为系统零状态响应的z变换与激励的z变换之比,即\[H(z) = \frac{Y(z)}{X(z)}\]

如果系统函数 \(H(z)\) 的有理函数表示式为\[H(z) = \frac{b_1 z^m + b_2 z^{m-1} + \cdots + b_m z + b_{m+1}}{a_1 z^n + a_2 z^{n-1} + \cdots + a_n z + a_{n+1}}\]那么,在Matlab中系统函数的零极点就可通过函数 'roots' 得到,也可借助函数'tf2zp' 得到,'tf2zp' 的语句格式为 \[[Z, P, K] = \text{tf2zp}(B, A)\]

其中,\(B\)\(A\) 分别表示 \(H(z)\)的分子与分母多项式的系数向量。它的作用是将 \(H(z)\)的有理分式表示式转换为零极点增益形式,即 \[ H(z) = k \frac{(z - z_1)(z - z_2) \cdots (z - z_m)}{(z - p_1)(z - p_2) \cdots (z - p_n)} \quad \]

系统函数的零极点分布与其时域特性的关系

与拉氏变换在连续系统中的作用类似,在离散系统中,z变换建立了时域函数 \(h(n)\) 与z域函数 \(H(z)\) 之间的对应关系。因此,z变换的函数 \(H(z)\) 从形式可以反映 \(h(n)\) 的部分内在性质。我们仍旧通过讨论 \(H(z)\) 的一阶极点情况,来说明系统函数的零极点分布与系统时域特性的关系。

离散时间LTI 系统的频率特性分析

对于因果稳定的离散时间系统,如果激励序列为正弦序列\(x(n) = A\sin(n\omega) u(n)\),则系统的稳态响应为 \[ y_{ss}(n) = A\left|H\left(e^{j\omega}\right)\right|\sin[n\omega + \varphi(\omega)] u(n) \] 其中,\(H\left(e^{j\omega}\right)\)通常是复数。离散时间系统的频率响应定义为 \[ H\left(e^{j\omega}\right) = \left|H\left(e^{j\omega}\right)\right| e^{j\varphi(\omega)} \]

其中,\(\left|H\left(e^{j\omega}\right)\right|\)称为离散时间系统的幅频特性;\(\varphi(\omega)\)称为离散时间系统的相频特性;\(H\left(e^{j\omega}\right)\) 是以\(\omega_s \left(\omega_s = \frac{2\pi}{T}, \text{若零 } T=1, \omega_s = 2\pi \right)\)为周期的周期函数。因此,只要分析 \(H\left(e^{j\omega}\right)\)\(|\omega| \leq \pi\) 范围内的情况,便可分析出系统的整个频率特性。

Matlab提供了求离散时间系统频响特性的函数 'freqz',调用 'freqz'的格式主要有两种。一种形式为 \[[H, w] = \text{freqz}(B, A, N)\]

其中,\(B\)\(A\) 分别表示 \(H(z)\) 的分子和分母多项式的系数向量;\(N\)为正整数,默认值为512;返回值 \(w\) 包含 \([0, \pi]\) 范围内的 \(N\)个频率等分点;返回值 \(H\) 则是离散时间系统频率响应\(H\left(e^{j\omega}\right)\)\(0 \sim \pi\) 范围内 \(N\)个频率处的值。另一种形式为 \[[H, w] = \text{freqz}(B, A, N, 'whole')\]与第一种方式不同之处在于角频率的范围由 \([0, \pi]\) 扩展到 \([0, 2\pi]\)

阅读全文 »

实验目的

  1. 理解时域采样理论与频域采样理论;

  2. 掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;

  3. 掌握频率域采样会引起时域周期化的原因,频率域采样定理及其对频域采样点数选择的指导作用;

  4. 对信号在某个表示域进行采样,会导致在另一个域周期化,科学的结论是建立在对问题的仔细分析和实事求是的基础上得到的。

实验原理

时域采样定理要点

对模拟信号进行时域等间隔采样,形成的采样信号的频谱是原模拟信号频谱 以采样角频率为周期进行周期延拓。公式为:

采样频率必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的频谱不产生频谱混叠。但是利用计算机计算上式并不方便,下面导出另一个公式,以便计算机上进行实验。

理想采样信号 和模拟信号 之间的关系如下:

对式进行傅里叶变换,得到:

在式的积分项中,只有当 时,才有非零值,因此:

频域采样定理要点

对信号 的频谱函数 上等间隔采样点,得到:

点DFT 得到的序列就是原序列为周期进行周期延拓的主值序列,公式为:

由于已知,频域采样点数必须大于等于与时域采样信号的长度(即)才能避免频谱混叠。则用计算机计算DFT 得到的序列就是原序列,如果,则频谱序列呈现更多零元素;如果,则信号在频域上出现混叠,而且的长度也比的长度短,因此 不相同。

在数字信号处理应用中,只需要在有效区域进行频域采样即可。

阅读全文 »

实验目的

  1. 加深对FFT 算法原理的理解(因为FFT 只是DFT 的一种快速算法,所以FFT的运算结果必然满足DFT 的基本性质)。

  2. 熟悉FFT 子程序的应用。

  3. 用FFT 对连续信号和时域离散信号(如语音和图像信号)进行谱分析的实现方法,能理解可能出现的分析误差,能分析误差的原因,以便在实际应用中能正确使用FFT。

  4. 对同一信号,可分别在时域和频域中进行表示或描述,以便从不同域,也就是不同的角度对信号进行特性分析,或进行有效处理,因此要建立从多种角度看待问题的哲学思想和科学思维。

实验原理

DFT的定义

离散傅里叶变换(Discrete FourierTransform,简称DFT)是一种将有限长度的时域信号(离散信号)转换为有限长度的频域信号的数学方法。DFT是傅里叶变换在离散信号上的应用,它允许我们分析数字信号的频率成分。对于长度为N的序列,其DFT定义为:

其中, 是序列 的DFT, 是频率索引, 是虚数单位,是自然对数的底数。

DFT的性质

线性性质

如果 是两个有限长序列,长度分别为 ,且 其中, 为常数,取,则 点 DFT 为 其中 分别为 点 DFT。

循环移位性质

1.序列循环移位

为有限长序列,长度为 ,则 的循环移位定义为

公式表明,将 为周期进行周期延拓得到,再将 左移 得到,最后取 的主值序列则得到有限长序列 的循环移位序列

2.时域循环移位定理

是长度为 的有限长序列, 的循环移位,即

3.频域循环移位定理

如果

用MATLAB计算序列的DFT

MATLAB提供了用快速傅里叶变换算法FFT(算法见第 4章介绍)计算DFT的函数fft,其调用格式如下:

调用参数 为被变换的时域序列向量, 是 DFT变换区间长度,当 大于 的长度时, fft函数自动在 后面补零。函数返回 点 DFT变换结果向量 ,这时,

。当 小于 的长度时, fft函数计算 的前面 个元素构成的 长序列的 点 DFT,忽略 后面的元素。

用DFT信号进行谱分析

所谓信号的谱分析,就是计算信号的傅里叶变换。连续信号与系统的傅里叶分析显然不便于直接用计算机进行计算,使其应用受到限制。而DFT是一种时域和频域均离散化的变换,适合数值运算,成为用计算机分析离散信号和系统的有力工具。对连续信号和系统,可以通过时域采样,应用DFT进行近似谱分析。下面分别介绍用DFT对连续信号和离散信号(序列)进行谱分析的基本原理和方法。

用DFT对连续信号进行谱分析

工程实际中,经常遇到连续信号 ,其频谱函数 也是连续函数。为了利用DFT对 进行频谱分析,先对 进行时域采样,得到 ,再对 进行 DFT,得到的X(k)则是 x(n)的傅里叶变换 在频率区间 上的 N点等间隔采样。这里 x(n)和X(k)均为有限长序列。然而,由傅里叶变换理论知道,若信号持续时间有限长,则其频谱无限宽;若信号的频谱有限宽,则其持续时间必然为无限长。所以严格地讲,持续时间有限的带限信号是不存在的。

因此,按采样定理采样时,上述两种情况下的采样序列 均应为无限长,不满足DFT的变换条件。实际上对频谱很宽的信号,为防止时域采样后产生频谱混叠失真,可用预滤波器滤除幅度较小的高频成分,使连续信号的带宽小于折叠频率。对于持续时间很长的信号,采样点数太多,以致无法存储和计算,只好截取有限点进行DFT。

由上述可见,用DFT对连续信号进行频谱分析必然是近似的,其近似程度与信号带宽、采样频率和截取长度有关。实际上从工程角度看,滤除幅度很小的高频成分和截去幅度很小的部分时间信号是允许的。因此,在下面分析中,假设 是经过预滤波和截取处理的有限长带限信号。

设连续信号 持续时间为 ,最高频率为 的傅里叶变换为 ,对 进行时域采样得到 的傅里叶变换为。由假设条件可知 的长度为

式中,T为采样间隔, 为采样频率。用 X(k)表示 x(n)的 N点DFT,下面推导出X(k)与 的关系,最后由此关系归纳出用X(k)表示 的方法,即用 DFT对连续信号进行谱分析的方法。

由(2.4.3)式知道, 的傅里叶变换 的傅里叶变换 满足如下关系:

代入上式,得到:

式中

表示模拟信号频谱 的周期延拓函数。由 x(n)的 N点DFT的定义有

将上式代入下式,得到:

上式说明了 的关系。为了符合一般的频谱描述习惯,以频率 f为自变量,整理上式。令

则上式变为

由此可得

式中,F表示对模拟信号频谱的采样间隔,所以称之为频率分辨率, 为截断时间长度。

在对连续信号进行谱分析时,主要关心两个问题,这就是谱分析范围和频率分辨率。谱分析范围为,直接受采样频率 的限制。为了不产生频谱混叠失真,通常要求信号的最高频率。频率分辨率用频率采样间隔F描述,F表示谱分析中能够分辨的两个频率分量的最小间隔。显然,F越小,谱分析就越接近,所以 F较小时,我们称频率分辨率较高。下面讨论用DFT对连续信号谱分析的参数选择原则。

在已知信号的最高频率(即谱分析范围)时,为了避免频率混叠现象,要求采样速率 满足下式:

按照上式,谱分辨率 ,如果保持采样点数N不变,要提高频谱分辨率(减小F),就必须降低采样频率,采样频率的降低会引起谱分析范围变窄和频谱混叠失真。如维持 不变,为提高频率分辨率可以增加采样点数 N,因为,只有增加对信号的观察时间,才能增加 和 N可以按照下面两式进行选择:

用DFT对序列进行谱分析

我们知道单位圆上的 Z 变换就是序列的傅里叶变换,即

的连续周期函数。如果对序列 进行 N 点 DFT 得到 X(k),则 X(k) 是在区间 上对 的 N 点等间隔采样,频谱分辨率就是采样间隔。因此序列的傅里叶变换可利用 DFT(即 FFT)来计算。

对周期为 N 的周期序列 ,由(2.3.10)式知道,其频谱函数为

其中

由于 以 N 为周期,因而 也是以 为周期的离散谱,每个周期有 N 条谱线,第 k 条谱线位于 处,代表 的 k次谐波分量。而且,谱线的相对大小与 成正比。由此可见,周期序列的频谱结构可用其离散傅里叶级数系数 表示。由 DFT 的隐含周期性知道,截取 的主值序列 ,并进行 N 点 DFT,得到:

所以可用 X(k)表示 的频谱结构。

如果截取长度 M 等于 的整数个周期,即 ,m为正整数,即

,则

因为

所以

由此可见, 也能表示 的频谱结构,只是在 时,,表示 的 i次谐波谱线,其幅度扩大 m 倍。而其他 k值时,,当然, 对应点频率是相等的。所以,只要截取 的整数个周期进行DFT,就可得到它的频谱结构,达到谱分析的目的。

如果 的周期预先不知道,可先通过计算 的自相关函数 估算 的周期,然后按上述方法对周期信号进行谱分析。

用DFT进行谱分析的误差问题

DFT(实际中用FFT计算)可用来对连续信号和数字信号进行谱分析。在实际分析过程中,要对连续信号采样和截断,有些非时限数据序列也要截断,由此可能引起分析误差。下面分别对可能产生误差的三种现象进行讨论。

(1)混叠现象。对连续信号进行谱分析时,首先要对其采样,变成时域离散信号后才能用DFT(FFT)进行谱分析。采样速率 必须满足采样定理,否则会在 (对应模拟频率)附近发生频谱混叠现象。这时用DFT分析的结果必然在 附近产生较大误差。因此,理论上必须满足 为连续信号的最高频率)。对 确定的情况,一般在采样前进行预滤波,滤除高于折叠频率 的频率成分,以免发生频谱混叠现象。

(2)栅栏效应。我们知道,N点 DFT是在频率区间 上对时域离散信号的频谱进行 N点等间隔采样,而采样点之间的频谱是看不到的。这就好像从 N个栅栏缝隙中观看信号的频谱情况,仅得到 N个缝隙中看到的频谱函数值。因此称这种现象为栅栏效应。由于栅栏效应,有可能漏掉(挡住)大的频谱分量。为了把原来被"栅栏"挡住的频谱分量检测出来,就必须提高频率分辨率。对有限长序列,可以在原序列尾部补零;对无限长序列,可以增大截取长度及DFT变换区间长度,从而使频域采样间隔变小,增加频域采样点数和采样点位置,使原来漏掉的某些频谱分量被检测出来。对连续信号的谱分析,只要采样速率足够高,且采样点数满足频率分辨率要求(见(3.4.14)式和(3.4.15)式),就可以认为DFT 后所得离散谱的包络近似代表原信号的频谱。

(3)截断效应。实际中遇到的序列 可能是无限长的,用 DFT对其进行谱分析时,必须将其截短,形成有限长序列y(n) = x(n) w(n)w(n)$ 称为窗函数,长度为N。,称为矩形窗函数。根据傅里叶变换的频域卷积定理,有

其中

幅度谱 曲线如图1所示(为周期,只画低频部分)。图中,的部分称为主瓣,其余部分称为旁瓣。

矩形窗的频谱图

例如,,其频谱为

x(n)的频谱 如图2(a)所示。将x(n)截断后, 的幅频曲线如图2(b)所示。

由上述可见,截断后序列的频谱 与原序列频谱必然有差别,这种差别对谱分析的影响主要表现在如下两个方面:

(1)泄露。由图 2(b)可知,原来序列 x(n)的频谱是离散谱线,经截断的离散谱线向附近展宽,通常称这种展宽为泄露。显然,泄露使频谱变模糊,使谱分辨率降低。从图2 可以看出,频谱泄露程度与窗函数幅度谱的主瓣宽度直接相关,在第7章将证明,在所有的窗函数中,矩形窗的主瓣是最窄的,但其旁瓣的幅度也最大。所以,在窗函数长度N 相同时,用矩形窗截取,产生的泄露最小。

x(n) = \cos(\omega_0 n) \text{ 加矩形窗前、后的幅频特性}

(2)谱间干扰。在主谱线两边形成很多旁瓣,引起不同频率分量间的干扰(简称谱间干扰),特别是强信号谱的旁瓣可能湮没弱信号的主谱线,或者把强信号谱的旁瓣误认为是另一频率的信号的谱线,从而造成假信号,这样就会使谱分析产生较大偏差。由于矩形窗的旁瓣最大,所以,用矩形窗截取时,产生的谱间干扰最大。

由于上述两种影响是由对信号截断引起的,因此称之为截断效应。由图1可以看出,增加N可使 的主瓣变窄,减小泄露,提高频率分辨率,但旁瓣的相对幅度并不减小。为了减小谱间干扰,应用其它形状的窗函数代替矩形窗(窗函数将在FIR数字滤波器设计中介绍)。但在N一定时,旁瓣幅度越小的窗函数,其主瓣就越宽。所以,在DFT变换区间(即截取长度)N一定时,只能以降低谱分析分辨率为代价,换取谱间干扰的减小。通过进一步学习数字信号处理的功率谱估计等现代谱估计内容可知,减小截断效应的最好方法是用近代谱估计的方法。但谱估计只适用于不需要相位信息的谱分析场合。

最后要说明的是,栅栏效应与频率分辨率是不同的两个概念。如果截取长度为N的一段数据序列,则可以在其后面补N个零,再进行2N点DFT,使栅栏宽度减半,从而减轻了栅栏效应。但是这种截短后补零的方法不能提高频率分辨率。因为截短已经使频谱变模糊,补零后仅使采样间隔变小,但得到的频谱采样的包络仍是已经变模糊的频谱,所以频率分辨率没有提高。因此,要提高频率分辨率,就必须对原始信号截取的长度加长(对模拟信号,就是增加采样时间 的长度)。

阅读全文 »

实验目的

  1. 加深对IIR数字滤波器设计方法和设计步骤的理解;

  2. 掌握用模拟滤波器原型设计IIR数字滤波器的方法;

  3. 能编写MATLAB函数,掌握设计IIR数字滤波器的函数调用方法;

  4. 根据不同的应用场景,确定不同的设计指标,设计出具有不同功能和性能的滤波器。不同滤波器的设计方法具有不同的优缺点,因此要全面、客观看待可能面对或出现的问题。

实验原理

脉冲响应不变法的基本知识

脉冲响应不变法又称冲激响应不变法,是将系统从 平面映射到 平面的一种变换方法,使数字滤波器的单位脉冲响应 模仿模拟滤波器的冲激响应 。其变换关系式为

由于 是一个周期函数,因而 平面虚轴上每一段 的线段都映射到 平面单位圆上一周。由于重叠映射,因而冲激响应不变法是一种多值映射关系。数字滤波器的频率响应是原模拟滤波器的频率响应的周期延拓(如图2-1 所示)。只有当模拟滤波器的频率响应是有限带宽,且频带宽度,才能避免数字滤波器的频率响应发生混叠现象。因此,脉冲响应不变法只适用于限带的模拟滤波器,对于高频区幅频特性不等于零的高通和带阻滤波器不适用。

image

用脉冲响应不变法设计IIR数字滤波器的步骤如下:

  1. 输入给定的数字滤波器的设计指标;

  2. 根据公式 将数字滤波器设计指标转换为模拟滤波器设计指标;

  3. 确定模拟滤波器的最小阶数和截止频率;

  4. 计算模拟低通原型滤波器的系统传递函数;

  5. 利用模拟域频率变换法求解实际模拟滤波器的系统传递函数;

  6. 用脉冲响应不变法将模拟滤波器转换为数字滤波器。

双线性变换法的基本知识

双线性变换法是将整个 平面映射到 平面,其映射关系为:

双线性变换法克服了脉冲响应不变法从 平面到 平面的多值映射的缺点,消除了频谱混叠现象。但其在变换过程中产生了非线性畸变,在设计IIR 数字滤波器的过程中需要进行一定的修正。

用双线性变换法设计 IIR 数字滤波器的步骤如下:

  1. 输入给定的数字滤波器的设计指标;

  2. 根据公式 进行预修正,将数字滤波器设计指标转换为模拟滤波器设计指标确定模拟滤波器的最小阶数和截止频率;

  3. 确定模拟滤波器的最小阶数和截止频率;

  4. 计算模拟低通原型滤波器的系统传递函数;

  5. 利用模拟域频率变换法求解实际模拟滤波器的系统传递函数;

  6. 用双线性变换法将模拟滤波器转换为数字滤波器。

信号的整数倍抽取

是连续信号 的采样序列,其采样频率为 是采样间隔。如果将其采样频率降低到原来的 为大于 1的整数,称为抽取因子),最简单的方法是对 个点抽取 1 点,组成一个新的序列 。由于 的采样间隔,除非抽取后仍能满足采样定理,否则会引起频谱混叠现象。信号抽取前后的频谱关系见教材第8 章的 8.2节。为了避免抽取后的频率混叠,在抽取前先采用一个抗混叠低通滤波器对信号滤波,把信号的频带限制在某个频率以下。

抗混叠滤波器的系统函数为:

阅读全文 »

实验目的

(1)学会运用Matlab求解离散时间系统的零状态响应;

(2)学会运用Matlab求解离散时间系统的单位取样响应;

(3)学会运用Matlab求解离散时间系统的卷积和。

实验原理

离散时间系统的响应

离散时间LTI系统可用线性常系数差分方程来描述,即 其中, 为实常数。

Matlab中函数可对差分方程,在指定时间范围内的输入序列所产生的响应进行求解。函数语句格式为 其中为输入的离散序列,为输出的离散序列。 的长度与的长度一样; 分别为差分方程右端与左端的系数向量。

离散时间系统的单位取样响应

系统的单位取样响应定义为系统在激励下的零状态响应,用表示。

Matlab求解单位取样响应可利用函数,并将激励设为单位抽样序列。

Matlab 另一种求单位取样响应的方法是利用控制系统工具箱提供的函数 来实现。函数的常用语句格式为

其中, 为响应的系数行向量,为激励的系数行向量,参数通常为正整数,代表计算单位取样响应的样值个数。

离散时间信号的卷积和运算

由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。离散时间信号的卷积定义为 可见,离散时间信号的卷积运算是求和运算,因而常称为"卷积和"。

Matlab求离散时间信号卷积和的命令为,语句格式为

其中, 表示离散时间信号值的向量; 为卷积结果。用Matlab进行卷积 和运算时,无法实现无限的累加,只能计算时限信号的卷积。

Matlab中的二维卷积函数 conv2()

(1)

设矩阵 的大小为 ,矩阵 的大小为卷积 ,则卷积后 的大小为

(2)

矩阵 先与 向量在列方向进行卷积,然后再与 向量在行方向上进行卷积;

(3)

时,返回全部二维卷积结果,即返回 的大小为

时,返回与 同样大小的卷积中心部分;

时,不考虑边界补零,即只要有边界补出的零参与运算的都舍去,返回 的大小为

函数常用于对图像进行滤波处理。

阅读全文 »

目录

MATLAB数据及运算

例1 用Matlab编程实现信号 ,并绘制出相应波形。

例2 用Matlab表示离散序列 ,并绘制图形。

MATLAB绘图

多窗口绘制三个函数的曲线

一个图形窗口分子图绘制

音频文件数据的读取、播放和保存

实验任务

在Matlab平台上编程实现下面的连续信号

在Matlab平台上编程实现下面的离散信号

MATLAB数据及运算

已知a=[1 2 3;4 5 6;7 5 4],b=[3 5 3;6 8 7;9 5 7]。试编程计算a+b、a-b、a*b、a/b、a\b、a.*b、a./b、a.\b。比较并分析结果。

1
2
3
4
5
clc;
close;
close all;
clear;
clear all;
1
2
a=[1 2 3;4 5 6;7 5 4];
b=[3 5 3;6 8 7;9 5 7];
1
2
3
4
5
6
7
8
9
10
11
12
c1=a+b;
c2=a-b;
c3=a*b;
c4=a.*b;
c5=a/b;
c6=a*inv(b);
c8=a\b;
c9=inv(a)*b;
c10=a.\b;
c11=a./b;
c12=a^2;
c13=a.^2;

例1 用Matlab编程实现信号 ,并绘制出相应波形。

1
2
3
t = -100:1:100;
f = sin(t/(2*pi));
plot(t,f)
figure_0.png

例2 用Matlab表示离散序列 ,并绘制图形。

1
2
3
k = 0:4;
x = [1 1 1 1 1];
stem(k,x)
figure_1.png

MATLAB绘图

多窗口绘制三个函数的曲线

阅读全文 »
0%