精华内容
下载资源
问答
  • 信号处理软件

    2014-05-08 08:25:23
    可以进行FFT变换以及实现滤波、小波变换的实用小软件
  • 基于MATLAB 的脉搏信号处理软件系统,自己采集脉搏信号,之后用Matlab 的GUI 设计一个软件处理系统,能实现显示采集的信号,处理后的信号,然后输出脉率,频谱。并判断脉率的正常性,界面非常漂亮,脉搏信号用TXT...
  • openvibe是一款脑电信号处理软件,用起来非常方便,但是方便也就了缺点。比如说要训练分类器实现对用于运动意图的分析时,官方提供的方式是通过箭头的方式,随机出现的向左或者向右的箭头提示用户执行不同的指令...

    脑电信号处理软件OpenVibe更改软件自带训练方式

    openvibe是一款脑电信号处理软件,用起来非常方便,但是方便也就有了缺点。比如说要训练分类器实现对用于运动意图的分析时,官方提供的方式是通过箭头的方式,随机出现的向左或者向右的箭头提示用户执行不同的指令(如下图)。但是如果想自己去定义训练的动作而不想盯着软件提供的界面就非常困难了。而且训练的过程中读取到的脑电信号需要加入不同动作对应的标签以便后续进行特征提取与分类。因此理想的解决方法是将软件中的界面替换为自己定义的动作,即根据不同方向的箭头出现的时机替换成自己想要的训练方式。


    通过读取Graz Motor Imagery BCI Stimulatot产生的动作标签,发现不同的箭头方向对应着不同的label信息,因此可以通过VRPN将动作标签以按键的方式发动到自己的工程中,根据不同的label来执行不同的任务,实现对openvibe训练界面的替换。


    配置好相应的文件之后就可以在自己新建的C++工程看到对应的标签发过来了。通过其对应关系即可实现对训练动作的重新定义。


    展开全文
  • 数字信号处理期末总复习

    万次阅读 多人点赞 2020-05-30 10:59:10
    基于教材:《数字信号处理——原理、实现及应用(第3版)》 高西全等 编著 一、基本概念 1.1 信号 1.2 系统 1.3 卷积 1.4 差分方程 二、傅里叶变换 2.1 连续信号:CTFT和CTFS 2.2 时域离散信号:DTFT和DTFS 2.3 周期...

    DSP期末总复习

    基于教材:《数字信号处理——原理、实现及应用(第3版)》 高西全等 编著

    一、基本概念

    1.1 信号

    1.2 系统

    1. 线性性
    2. 时不变性
    3. 因果性/可实现性
      (1)def: 系统n时刻的输入取决于n时刻和n时刻以前的输入信号,和n时刻之后的输入信号无关
      (2)充要条件:n<0时h(n)=0
      (3)因果系统的单位脉冲响应必然是因果序列
    4. 稳定性
      充要条件:系统的单位脉冲响应绝对可和

    1.4 差分方程

    1. def:从0开始,到某项结束
    2. 递推法求解

    二、傅里叶变换

    2.1 连续信号:CTFT和CTFS

    记住公式,不做证明。
    在这里插入图片描述

    2.2 时域离散信号:DTFT和DTFS、周期信号的傅里叶变换

    2.2.1 DTFS

    1. 公式、证明如下:
      在这里插入图片描述
    2. 频谱是离散线状谱,周期为N.(虽然横坐标不是频率,但是是对频率的采样,所以也是频谱)
      【变量在n,k之间切换】这实质上体现了:离散谱是对包络线的采样。

    2.2.2 DTFT

    1. 适用于非周期信号,是通过令周期序列的周期趋于无穷得到的,同时还要求序列绝对可和。
      公式:
      在这里插入图片描述
    2. 【变量在n,w之间切换】频谱是连续的,是对DTFS离散谱的包络,周期为2pi.

    2.2.3 周期信号的傅里叶变换

    公式及证明:
    在这里插入图片描述

    2.3 傅里叶变换的性质和常用结论

    1. 性质
      (1)周期性
      (2)线性性
      (3)移位性:x(n-n0) --> 外面乘一个e^-jwn0
      (4)频移性:e^-jw0n --> X里面变成w-w0
      (5)频域微分性质
      (6)对称性
      (7)卷积定理
    2. 基本序列的FT
      在这里插入图片描述

    2.4 离散傅里叶变换(DFT)

    DTFT和ZT的变换结果都是连续函数,而DFT既是时域到频域的变换,其变换结果又是对时域离散信号频谱的等间隔采样。

    2.4.1 基本概念

    设序列长度为M,定义N点DFT为:
    在这里插入图片描述
    要求:N>=M,注意WN的代换

    2.4.2 关系

    1. N点DFT是序列的Z变换在单位圆上的等间隔采样
    2. N点DFT是序列的DTFT在[0,2pi]上的等间隔采样
    3. IDFT是DTFS的主值区序列,X(k)是X(k)~的主值序列

    2.4.3 性质

    1. 线性性
    2. 隐含周期性
    3. 有限长序列的循环移位:先周期延拓,再左移m个单位,最后取主值序列。
      循环移位性质(证明见下)
    4. 复共轭序列的DFT
    5. 实信号DFT的特点
      在这里插入图片描述

    2.5 卷积

    2.5.1 线性卷积

    1. 定义
      运算过程:将x(n)中的n换成m,h(n)中的n换成n-m,相同m的序列值相乘后,再对乘积求和。
    2. 图解法
    3. 解析法【注意分类讨论】
    4. 性质:移位、运算律

    2.5.2 循环卷积

    三个长度量:L:循环卷积的长度 M:x(n)的长度 N:h(n)的长度
    x((n-m))L是以L为周期的信号。
    形成循环倒相序列,为了解决掉负数项,由周期性给系数加L,n值由0取到L-1,得到矩阵

    2.6 快速傅里叶变换(FFT)

    2.6.1 如何减小运算量?

    不断将长序列的DFT分解为短序列的DFT,并利用周期性和对称性及一些特殊值来减少DFT运算量。

    2.6.2 基2 FFT算法

    1. 按n的奇偶性分解
    2. 引入l,进行变量代换
    3. 利用WN的性质,两个角标同时除以2,得到两个N/2点DFT
    4. 得到周期性公式
    5. 蝶形图:(以8点为例)
      (1)最后求得的八个数,是两两一组的形式求出来的,即X(k),X(k+N/2)
      为了解出这两个未知数,我们需要知道对应的X1(k),X2(k)
      (2)X1(k)又和X1(k+N/4)构成另一对,可以看出,两组的间距、运算点数每次除以2
      ……
      (3)直到到达最后一层
      WN的角标变化:两组[0 1 2 3] N --> 四组[0 1] N/2【实际写成[0 2] N】 --> 八组[0] N/4【实际写成[0] N】

    2.7 模拟信号的频谱分析

    1. 由模拟信号时域采样得到N点采样序列,经过DFT,再乘以T,就是模拟信号在频域的采样。
      f和k可以进行坐标转换,以f为横坐标,以X(k)为函数值,绘制出|X(k)|的包络/X(k)的相位包络,就是模拟信号的幅频/相频特性。
    2. 参数选择
      在这里插入图片描述
    3. 误差分析
      连续信号的谱分析主要关心两个指标:分辨率、谱分析范围
      (1)频谱混叠:若采样频率不满足采样定理,会在0.5Fs附近引起混叠
      (2)截断效应:CTFT是在无穷区间上的,然而实际观察到的模拟信号一般是有限长的,没有观察到的是0.
      用矩形窗截断。
      1)频谱泄漏:原来离散的谱线向两边展宽。矩形窗长度越长,展宽的宽度越窄。
      泄漏会使频谱模糊,谱的分辨率降低。
      2)谱间干扰:矩形窗函数的频谱存在许多旁瓣,和主信号频谱卷积后形成很多旁瓣,旁瓣起着谱间干扰的作用。
      (3)栅栏效应:N点DFT得到的只是N个采样点上的频谱值,两点间的频谱是不知道的,就像被栅栏遮住一样。
    4. DFT对周期信号进行谱分析

    三、Z变换

    3.1 Z变换

    1. def: 不加说明均指双边Z变换
      只有幂级数收敛,Z变换才有意义–>收敛域
    2. Z变换和傅里叶变换的关系:傅里叶变换是单位圆上的Z变换(前提是Z变换必须存在)
    3. 四种序列的收敛域
      因果序列的收敛域:R<|z|<=INF 零极相消不影响收敛!
    4. 常用结论证明:
      在这里插入图片描述
      在这里插入图片描述

    3.2 Z变换的性质

    1. 线性性:注意收敛域取交集!
    2. 序列移位:x(n-n0) --> 提取出z^(-n0)
    3. 时间反转:n取负 --> z取倒数
    4. z域微分:nx(n) --> -z*(X(z))’
    5. 共轭序列:对x(n)取共轭 --> X(z)同时对z和X取共轭
    6. 五个定理:
      (1)时域卷积定理

    3.3 逆Z变换

    1. 部分分式展开法
      最关键的就是最后一步时,根据收敛域判别可能的原序列!
      以及,是否足够熟练地作出准确记忆和判断。【助记:z大于啥的时候正常,小于加负号】
    2. 围线积分法
      其中:c是X(z)的收敛域中一条包含原点的逆时针旋转的封闭曲线,zk是F(z)在围线c内的M个极点
      在这里插入图片描述
      进行留数相关运算时,z都写成z-a的形式,不要带着z^-1的形式了。
    3. 例题
      (1)课本2.3.6【要点:F(z)的极点与n的取值有关;因果序列的性质;多阶极点的处理】
      在这里插入图片描述
      (2)课本2.3.10【要点:z变换性质的综合应用】
      在这里插入图片描述
      (3)课后2-24【要点:按收敛域分类讨论】
      在这里插入图片描述

    3.4 Z变换的应用

    1. 传输函数/频率响应函数、系统函数
    2. 根据极点分布,分析系统的因果性、稳定性
      (1)因果系统的系统函数的极点均在某个圆内,收敛域包含无穷
      (2)系统稳定时,系统函数收敛域一定包含单位圆/系统函数的极点不能位于单位圆上。
      (3)因果稳定的条件:H(z)的极点集中在单位圆内
    3. 根据零极点分布,分析系统的频率特性
      (1)基本概念
      设:M个零点,N个极点
      频率w由0增大到2pi的过程中,OB矢量绕坐标原点逆时针转一圈。
      极点零点分别指向B --> 极点矢量,零点矢量
      幅频特性 = 零点矢量长度之积/极点矢量长度之积
      相频特性 = w(N - M) + 零点矢量相角之和 - 极点矢量相角之和
      (2)零极点分布对幅频特性的影响:
      系统函数的极点主要影响幅频特性的峰值,峰值频率在极点附近。极点越靠近单位圆,峰值越高越尖锐。若极点在单位圆上,幅度无穷大,系统不稳定。
      系统函数的零点主要影响幅频特性的谷值,谷值频率在零点附近。零点越靠近单位圆,谷值越接近零。若零点在单位圆上,谷值为零。
      处于坐标原点的零极点不影响幅频特性。
      (3)例题:课本2.4.6
      在这里插入图片描述
      (4)例题:课本2.4.8
      在这里插入图片描述

    四、模拟信号数字处理

    这一章要干什么?

    用数字信号处理方法处理模拟信号。处理思路如下:
    预滤波 --> ADC --> 数字信号处理 --> DAC --> 平滑滤波

    4.1 预滤波

    采样前对模拟信号进行预滤波,预滤波器就是一个模拟低通滤波器,阻带截止频率0.5 \omega s
    也称抗混叠滤波器。

    4.2 采样

    4.2.1 理想采样信号

    1. 时域【横坐标都是t】:模拟信号 + 单位冲激串调制 —> 理想采样信号
    2. 频域【横坐标都是模拟角频率】【CTFT得到】:理想采样信号的频谱是模拟信号频谱以采样频率为周期进行周期延拓。
    3. 原理推导:
      在这里插入图片描述

    4.2.2 时域离散信号

    1. 区别:模拟信号和理想采样信号在整个t轴上有定义,而时域离散信号仅在整数点有定义。
    2. 时域【横坐标是n】:模拟信号 + 等间隔T采样 —> 时域离散信号
    3. 频域【横坐标是数字频率】【DTFT得到】:时域离散信号的频谱是模拟信号频谱变换一下横坐标(除以T)。
    4. 采样频率必须大于等于模拟信号最高频率的两倍以上,才能不丢失信息。
    5. 原理推导:
      在这里插入图片描述

    4.4 理想恢复

    1. def: 如何用理想采样信号恢复模拟信号?
    2. 原理推导:将理想采样信号通过理想低通滤波器G
      在这里插入图片描述
      g(t)的作用:在采样点之间连续插值

    4.5 线性模拟系统的数字模拟

    1. 用数字系统模拟线性模拟系统的外部特性
    2. 传输函数的关系推导:
      在这里插入图片描述

    五、滤波器

    5.1 一些散落的实例

    5.1.1 滑动平均滤波器

    5.1.2 全通滤波器

    5.1.3 最小相位滤波器

    5.2 模拟滤波器设计

    各种滤波器都是基于低通滤波器设计。

    5.2.1 设计指标

    1. 模拟滤波器的设计流程:
      (1)根据信号处理要求确定设计指标
      (2)选择滤波器类型
      (3)计算滤波器设计
      (4)确定滤波器系统函数
      (5)综合实现
    2. 因为几种典型的AF的相位特性已知,所以一般只给出对幅频特性的要求,而不考虑相位特性(若有要求则需另外考虑)。
      系统函数:Ha(s) 频率响应函数/传输函数:Ha(j/omega)
      通带边界频率:/omega p 阻带边界频率:/omega s
      通带最大衰减:/alpha p 阻带最小衰减:/alpha s 【注意是dB】
      损耗/衰减函数 3dB截止频率
      在这里插入图片描述

    5.2.2 巴特沃斯滤波器

    在这里插入图片描述

    5.2.3 切比雪夫滤波器

    I型滤波器:幅频特性在通带等波纹,阻带单调下降
    II型滤波器:幅频特性在阻带等波纹,通带单调下降
    在这里插入图片描述

    5.2.4 椭圆滤波器

    幅频特性在通带和阻带都等波纹。通带和阻带波纹固定时,阶数越高,过渡带越窄;阶数固定时,通带和阻带波纹越小,过渡带越宽。
    阶数相同时,椭圆滤波器可以获得对理想滤波器幅频响应的最好逼近。

    5.3 数字滤波器设计

    5.3.1 基本概念

    1. 数字滤波:通过对输入信号进行数值运算,让输入信号中有用的频率成分以较高的保真度通过,滤除某些无用的频率成分,实现对输入信号的选频处理。本章主要介绍选频性滤波器。
    2. 数字滤波器的优点:精度高,稳定性好,体积小,实现方法灵活,不存在阻抗匹配问题
    3. 分类:无限长单位脉冲响应数字滤波器IIRDF,有限长单位脉冲响应数字滤波器FIRDF
      系统函数分别为:
      在这里插入图片描述
    4. 设计方法:间接设计法【先根据数字滤波器指标设计相应的过渡模拟滤波器,再转换成DF】、直接设计法
    5. 理想滤波器的特点
      (1)通带内幅度为常数
      (2)阻带中幅度为0
      (3)单位脉冲响应是非因果无限长序列
      (4)物理不可实现
    6. 群时延:相频特性的负导数 群时延为常数表示输入信号中的所有频率分量的时间延迟相同。
    7. 信号通过理想滤波器波形不失真的充要条件:通带内幅度特性是常数,并且具有线性相位
    8. 理想滤波器的近似实现
      (1)h(n)向右移动,忽略n<0的较小的部分
      (2)h(n)对中心最大值对称则具有线性相位特性
    9. 设计实质:根据设计指标确定一个因果稳定的系统函数H(z)

    5.3.2 IIRDF

    一、基本概念
    1. 间接法设计流程:
      (1)给定数字滤波器指标
      (2)将数字滤波器指标转换成相应的过渡模拟滤波器指标
      (3)选择合适类型的模拟滤波器
      (4)设计满足要求的过渡模拟滤波器Ha(s)
      (5)将Ha(s)转换成数字滤波器H(z)
    2. 转换:幅频特性函数、三个带、频率
      在这里插入图片描述
      转换实质:用一种从s平面到z平面的映射函数将Ha(s)转换成H(z)
      映射函数的要求:
      (1)因果稳定的模拟滤波器转换后仍因果稳定
      (2)H(z)的频率响应特性能近似模仿Ha(s)的片断常数频率响应特性
    二、脉冲响应不变法(这两种方法都是转换方法)
    1. 基本思想:【波形逼近】(设模拟滤波器的单位冲激响应为ha(t))对ha(t)等间隔采样,得到数字滤波器的单位脉冲响应h(n)
    2. 原理推导、性能分析
      在这里插入图片描述
      模拟系统因果稳定,Ha(s)的所有极点位于s平面的左半平面,这些极点全部映射到z平面单位圆内,因此数字滤波器也因果稳定。
      数字滤波器频率响应是模拟滤波器频率响应的周期延拓。
    3. 优点:(若模拟滤波器具有带限特性【实际一般都不满足】,T满足采样定理)数字滤波器频率响应完全模仿了模拟滤波器频率响应。
      缺点:总是存在频谱混叠失真,混叠严重时不满足阻带衰减指标,不适合设计高通和带阻滤波器。
      如何减小频谱混叠失真?
      (1)选用具有锐截止特性【锐截止特性:滤波器从通带能够很快的过渡到阻带的滤波器特性,即过渡带很窄】的模拟滤波器【代价:阶数升高】
      (2)提高采样频率【代价:对处理速度要求更高】
    4. 例题6.2.1【一般取T = 1s】
    三、双线性变换法
    1. 基本思想:【算法逼近】一般数字滤波器用差分方程描述,模拟滤波器用微分方程描述。因此只要能用差分近似微分,就可以将差分方程转换成微分方程。
    2. 原理推导、性能分析
      在这里插入图片描述
      s平面的整个正虚轴映射成有限宽度的数字频段[0,pi],引起了数字频率和模拟频率之间的严重非线性畸变。
    3. 优点:从原理上彻底消除了频谱混叠
      缺点:仅能保持原模拟滤波器的片断常数幅频响应特性,不能保持相频响应特性。
    4. 设计步骤
      (1)确定数字滤波器四个指标。
      (2)非线性预畸变校正,转换成相应的模拟滤波器指标。
      (3)设计满足指标要求的过渡模拟滤波器。
      (4)由映射关系,转换成数字滤波器
    5. 采样间隔T的选择
      脉冲响应不变法:T = 1s 双线性变换法:T = 2s
    6. 例题6.2.3(略)

    5.3.3 FIRDF

    最大优点:可以实现线性相位滤波
    其他优点:全零点滤波器,硬件和软件实现结构简单,不用考虑稳定性问题。
    当幅频特性相同时,FIRDF阶数比IIRDF高得多。

    一、线性相位FIRDF

    1. 线性相位
    重新表示频率响应函数:幅度特性函数相位特性函数 【区别:幅频响应函数,相频响应函数】
    (1)第一类线性相位FIRDF的相位特性函数:/theta(w) = -w /tao
    (2)第二类线性相位FIRDF的相位特性函数:/theta(w) = /theta0 - w /tao
    第二类线性相位FIRDF只讨论theta0 = -pi/2的情况。
    线性相位滤波器又称恒定群延时滤波器。
    2. 时域约束(对h(n)的约束)
    第一类:h(n)关于(N-1)/2偶对称
    第二类:h(n)关于(N-1)/2奇对称
    3. 频域约束
    (1)h(n) = h(N - 1 - n) N为奇数,Hg(w)关于0 pi 2pi三点偶对称:可以实现低通、高通、带通、带阻
    (2)h(n) = h(N - 1 - n) N为偶数,Hg(w)关于0 2pi两点偶对称,关于pi奇对称 :可以实现低通、带通
    (3)h(n) = - h(N - 1 - n) N为奇数,Hg(w)关于0 pi 2pi三点奇对称:可以实现带通
    (4)h(n) = - h(N - 1 - n) N为偶数,Hg(w)关于0 2pi两点奇对称,关于pi偶对称:可以实现高通、带通
    4. 零点分布
    若zk是零点,则zk^-1,zk
    , zk* ^-1都是零点,四个一组

    二、窗函数法设计

    **1. 基本思想:**用FIRDF逼近希望的滤波特性
    窗函数设计法:截取hd(n)有限长的一段因果序列,并用合适的窗函数进行加权作为FIRDF的单位脉冲响应h(n)
    2. 基本方法
    (1)确定技术指标
    (2)构造希望逼近的频率响应函数
    (3)求hd(n)
    (4)加窗得到FIRDF的单位脉冲响应h(n)
    在这里插入图片描述
    3. 设计性能分析
    (1)理论推导
    逼近误差实际就是加窗的影响,窗函数的类型、长度都会影响逼近误差。
    在这里插入图片描述
    (2)两点误差(加窗效应)
    1)理想低通滤波器过渡带宽度为0,但是:Hg(w)以wc为中心形成过渡带,过渡带宽度 = 主带宽度
    2)理想低通滤波器通带阻带幅度为1,0,但是:Hg(w)在通带阻带均有波纹。旁瓣越大,波纹幅度越大。
    (3)一般的设计指标会给出:过渡带宽度、通带最大衰减、阻带最小衰减
    要想使过渡带变窄:增大窗函数长度N
    要想满足衰减:改进窗函数形状
    4. 典型窗函数
    (1)矩形窗
    三个参数:旁瓣峰值、过渡带宽度、阻带最小衰减
    (2)汉明窗
    (3)凯塞窗
    1)一种可调整的窗函数,最有用且近似最优。通过调整控制参数可以达到不同的阻带最小衰减,提供最小的主瓣宽度,也就是最窄的过渡带。
    2)参数公式
    5. 基于窗函数的设计流程
    (1)给定技术指标四个
    (2)选择窗函数
    (3)确定窗口参数N,beta
    (4)计算截止频率wc
    (5)确定理想滤波器:离散傅里叶反变换 --> hd[n]
    (6)对称加窗截断,得到滤波器

    5.3.4 IIR数字滤波器与FIR数字滤器的典型区别

    1. 性能上:
      ●IIR经济高效,可用较低的阶数获得较好的选择性。【IIR滤波器系统函数的极点可以位于单位圆内的任何地方】但是选择性越好,相位非线性越严重。
      ●FIR滤波器可以得到严格的线性相位特性,但成本较高,只能用较高的阶数达到高的选择性。【FIR滤波器系统函数的极点固定在原点】
    2. 结构上:
      ●IIR必须采用递归结构:极点位置必须在单位圆内,否则系统不稳定。
      ●FIR主要采用递归结构:不存在稳定问题。可以采用FFT实现,在相同阶数条件下,运算速度可以大大提高。
    3. 设计工具上:
      ●IIR滤波器可以借助模拟滤波器的成果,一般都提供有效的封闭形式的设计公式,计算工作量比较小,对计算工具要求不高。
      ●FIR滤波器一般没有有效的封闭形式的设计公式,对计算工具要求较高。
    4. 应用上:
      ●IIR滤波器主要用于设计具有片断常数特性的滤波器【低通、高通、带通、带阻】。
      ●FIR滤波器能适应某些特殊的应用。

    六、时域离散系统的实现

    6.1 基本概念

    1. 基本实现方法:软件实现、硬件实现
    2. 本章重点研究差分方程/系统函数的实现方法
    3. 一些指标

    6.2 FIR网络结构

    FIR的单位脉冲响应有限长,差分方程和系统函数如下:
    在这里插入图片描述

    1. 直接型结构:长度为N的FIRDF直接型结构需要N-1个单位延时器,N个乘法器,N-1个加法器
    2. 级联型结构
      (1)先因式分解,整理成一阶二阶网络的级联形式
      (2)其中每个网络都用直接型结构实现
    3. 线性相位结构
      公式:
      在这里插入图片描述
      若N为偶数,乘法器减少到0.5N个;若为奇数,乘法器减少到0.5(N+1)个

    6.3 IIR网络结构

    特点:信号流图中含有反馈支路,其单位脉冲响应无限长。

    1. 直接型结构

    2. 级联型结构

    3. 并联型结构

    4. 转置型结构

    附录:利用复数、级数知识证明定理

    1.DTFT的时域卷积定理

    在这里插入图片描述

    2.DTFT的频域卷积定理

    在这里插入图片描述

    3.DTFT的巴塞伐尔定理

    在这里插入图片描述

    4.ZT的时域卷积定理

    在这里插入图片描述

    5.ZT的频域卷积定理

    在这里插入图片描述

    6.ZT的巴塞伐尔定理

    在这里插入图片描述

    7.DFT的时域循环卷积定理

    在这里插入图片描述

    8.DFT的频域循环卷积定理

    在这里插入图片描述

    9.离散巴塞伐尔定理

    在这里插入图片描述

    展开全文
  • 信号处理(一)在Linux下当我们想强制结束一个程序的时候,我们通常会给它发送一个信号然后该进程捕捉到信号,再然后该进程执行一定操作最终被终止.信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号...

     信号处理(一)





    在Linux下当我们想强制结束一个程序的时候,我们通常会给它发送一个信号然后该进程捕捉到信号,再然后该进程执行一定操作最

    被终止.信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一

    个错误产生的。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个信号的产生叫生

    成,接收到一个信号叫捕获。信号的捕捉这篇可能不会详细的说到,因为我想给它专门讲一个博客,因为信号捕捉的实例也是蛮多的.




    首先我们认识一下这些信号:


     $ kill -l
     1) SIGHUP        2) SIGINT        3) SIGQUIT       4) SIGILL
     5) SIGTRAP       6) SIGABRT       7) SIGBUS        8) SIGFPE
     9) SIGKILL      10) SIGUSR1      11) SIGSEGV      12) SIGUSR2
    13) SIGPIPE      14) SIGALRM      15) SIGTERM      17) SIGCHLD
    18) SIGCONT      19) SIGSTOP      20) SIGTSTP      21) SIGTTIN
    22) SIGTTOU      23) SIGURG       24) SIGXCPU      25) SIGXFSZ
    26) SIGVTALRM    27) SIGPROF      28) SIGWINCH     29) SIGIO
    30) SIGPWR       31) SIGSYS       34) SIGRTMIN     35) SIGRTMIN+1
    36) SIGRTMIN+2   37) SIGRTMIN+3   38) SIGRTMIN+4   39) SIGRTMIN+5
    40) SIGRTMIN+6   41) SIGRTMIN+7   42) SIGRTMIN+8   43) SIGRTMIN+9
    44) SIGRTMIN+10  45) SIGRTMIN+11  46) SIGRTMIN+12  47) SIGRTMIN+13
    48) SIGRTMIN+14  49) SIGRTMIN+15  50) SIGRTMAX-14  51) SIGRTMAX-13
    52) SIGRTMAX-12  53) SIGRTMAX-11  54) SIGRTMAX-10  55) SIGRTMAX-9
    56) SIGRTMAX-8   57) SIGRTMAX-7   58) SIGRTMAX-6   59) SIGRTMAX-5
    60) SIGRTMAX-4   61) SIGRTMAX-3   62) SIGRTMAX-2   63) SIGRTMAX-1
    64) SIGRTMAX

    列表中,编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称做可靠

    号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。我们这些新手就着重

    前31个,后面的对于现在来说用处不大.



    信号的产生:



    产生信号的条件主要有:


    1.用户在终端按下某些建时,终端驱动程序会发送信号给前台进程,例如ctrl -c 产生SIGINT信号.ctrl-\产生SIGQUIT信号,


    Ctrl-Z产生SIGTSTP信号(可使前台进程停止)


    2.硬件异常产生信号,这些条件由硬件检测到并通知内核,然后内核向当前进程发送适当的信号.例如当前进程执行了除以0的


    指令,CPU的运算单元会产生异常,内核将这个异常解释为SIGFPE信号发送给进程.在比如当前进程访问了非法内存地址,MMU会


    产生异常,内核将这个异常解释为SIGSEGV信号发送给进程.


    3,一个进程调用kill(2)函数可以发送信号到另一个进程.可以用kill(1)命令发送信号给某个进程,kill(1)命令也是调用kill


    (2)函数实现的,如果不明确指定信号则发送SIGTERM信号,该信号的默认处理是终止进程.当内核检测到某种软件条件发生时也


    可以通过信号通知进程. 例如闹钟超时产生SIGALRM信号,向读端已关闭的管道写数据时产生SIGPIPE信号.如果不想按默认动作


    处理号,用户程序可以调用sigacttion(2)函数告诉内核处理某种信号.


    再然后,你接收到信号的处理动作有一下三种:


    1.忽略此信号

    2.执行该信号的默认处理动作

    3.提供一个信号处理函数,要求内核处理该信号时切换到用户执行这个处理函数,这种方式称为捕捉一个信号.


    信号的阻塞


    实际执行信号的处理动作称为信号抵达,信号从产生到抵达之间的状态,称为信号未决.进程可以选择阻塞某个信号。 被阻塞的信

    号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行抵达的动作. 阻塞和忽略是不相同的,只要信号被阻塞就不会

    抵达,而忽略是在抵达之后可选的一种处理动作.




    每个信号都有两个标志位分别表示阻塞(block) 和 未决(pendin).还有一个函数指针表示处理动作。

    信号产生时,内核在进程控制块中设置该信号的未决标志,直到信号抵达才消除该标志.

    1.SIGHUP信号未阻塞也未产生过,当它抵达时执行默认处理动作.

    2.SIGINT信号产生过,但正在被阻塞,所以暂时不能递达。虽然他的处理动作是忽略,但在没有解除阻

    塞之前不 能忽略这个信号,因为进程仍有机会 改变处理动作之后再解除阻塞.

    3.SIGQUIT信号未产生过,一旦产生SIGQUIT信号将被阻塞,它的处理动作是用户自定义函数sighandler。

    如果在进程在阻塞某信号时,该信号产生过多次,Liunx这样实现的:常规信号在抵达之前产生多次只计一次,而实时信号在递达之

    前产生多可以依次 放在一个队列里. 每个信号只有一个bit的未决标志,非0既1,不记录该信号产生了多少次,阻塞标志也是这样表

    示的. 因此呢,未 决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t为信号集,这个类型可以表示每个信号的"有效"或

    "无效“状态,在阻塞信号集中"有效"和"无效"的含义是该信号是否被阻塞,而在未决信号集中类似. 阻塞信号集也叫做当前进程的

    信号屏蔽字. 屏蔽这样理解 "是阻塞 是阻塞 不是忽略"

    主要信号的函数:


    sigset_t类型对于每种信号用一个bit表示 "有效"或者"无效" 接下来我们来认识一下信号集操作函数
    #Include<signal.h>

    int sigemptyset(sigset_t *set);
    初始化set所指向的信号集,使其中所有信号的对应的bit清零,表示该信号集不包含任何有效信号.

    int sigfillset(sigset_t *set);
    初始化set所指向的信号集,使其中所有信号的对应bit置位,表示该信号机的有效信号包括系统支持的所有信号.

    int sigaddset(sigset_t *set,int signo);
    在该信号集中添加某种有效信号.

    int sigdelset(sigset_t *set,int signo);
    在该信号集中删除某种有效信号

    int sigismemeber(const sigset_t *set,int signo);
    是一个布尔函数,用于判断一个信号集的有效信号中是否包含某种信号,若包含贼返回1,不包含则返回0,出错返回-1

    int sigprocmask(int how,const sigset_t *set,sigset_t *oset);
    读取或更改进程的信号屏蔽字(阻塞信号集)如果成功返回0 失败返回-1

    int sigpending(sigset_t *set);
    读取当前进程的未决信号集,通过set参数传出,调用成功则返回0,出错则返回-1.


    例题:


    这里我引用了一个很经典的例子,因为这个例子几乎运用到了所有信号集处理函数,可以让我们基础扎实的运用这些函数.

    #include<stdio.h>
    #include<signal.h>
    #include<unistd.h>
    
    void printsigset(sigset_t *set)
    {
    	int i = 0;
    	for(;i<32;i++){
    		if(sigismember(set,i))
    			putchar('1');
    		else
    			putchar('0');
    	}
    	puts("");
    }
    
    int main()
    {
    	sigset_t s,p;
    	sigemptyset(&s);
    	sigaddset(&s,SIGINT);
    	sigprocmask(SIG_BLOCK,&s,NULL);
    	while(1)
    	{
    		sigpending(&p);
    		printsigset(&p);
    		sleep(1);
    	}
    	return 0;
    }
    

    我们加上注释:




    这个程序的大概意思就是 我们阻塞一个信号集,让它一直处于未决状态,并把它里面的信号编号显示出来,比如中途我们加入了


    个ctrl+c,后面信号集里面就会出现这个信号,然后他们还是一直处于未决状态.



    特别提醒:如果一个信号被进程阻塞,它就不会传递给进程,但会停留在待处理状态,当进程解除对待

              处理信号的阻塞时,待处理信号就会立刻被处理。







    展开全文
  • 数字信号处理--语音信号处理

    万次阅读 多人点赞 2017-02-15 11:58:29
    在Matlab平台上语音信号处理

    摘 要

    语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科。语音信号处理的目的是得到某些参数以便高效传输或存储,或者是用于某种应用。本设计利用计算机Windows下的录音机录入一句语音信号,在Matlab平台上对其进行时域分析和频域分析,并对所采集的语音信号加入干扰噪声,对加噪语音信号进行时域和频域分析,以确定加噪信号的频率分布情况,从而确定滤波器的相关参数。进一步用双线性变换法设计切比雪夫Ⅱ型的滤波器,然后对加噪的语音信号进行滤波处理。比较滤波前后的语音信号的时域和频域特性,回放加噪语音信号和去噪语音信号,从而分析滤波性能。

     

    关键词:

    Matlab,语音信号,时域分析,频域分析,滤波器

     

    语音信号处理系统设计


    一、课程设计的目的

    1、学会MATLAB的使用,掌握基本MATLAB程序设计方法;

    2、掌握数字信号处理的一些基本概念、基本理论和基本方法;

    3、掌握在Windows环境下采集语言信号的方法;

    4、掌握MATLAB设计IIR数字滤波器的方法;

    5、掌握用MATLAB对信号进行分析和处理的方法;

    二、设计要求及任务

    1. 语音信号的采集

    本设计利用计算机Windows下的录音机录入一句语音信号,然后在Matlab软件平台下,利用函数waveread对语音信号进行采样,记住采样频率和采样点数。

    1. 语音信号的频谱分析

    在Matlab中,可以利用函数FFT对信号进行快速傅里叶变换,得到信号的频谱特性,然后加入一干扰信号,要求画出语音信号干扰前后的时域波形,并对其频谱进行分析。

    1. 设计数字滤波器,给出性能指标(参考指标)

    (1)低通滤波器的性能指标:fp=1000Hz,fs=1200Hz,As=100dB, Ap=1dB

    (2)高通滤波器的性能指标:fs=4800Hz,fp=5000Hz,As=100dB, Ap=1dB

    (3)带通滤波器的性能指标:fp1=1200Hz,fp2=3000Hz,fs1=1000Hz,

    fps2=3200Hz,As=100dB,Ap=1dB;

    采用双线性变换法设计上面一种类型的数字滤波器,要求使用切比雪夫II型滤波器。

    1. 用滤波器对信号进行滤波

    画出滤波后信号的时域波形及频谱,并对滤波前后的信号进行对比,分析信号的变化。

    1. 回放语音信号,分析滤波前后的语音变化

    在熟悉数字信号处理课程理论的基础上,通过MATLAB仿真实现语音信号的采集与处理,进一步加深对数字信号处理理论和技术的掌握。

    三、课程设计平台

    计算机、MATLAB6.5以上。


    四、计原理与计算方法

    1. 卷积运算

    卷积和乘积运算在频域和时域是一一对应的,两个信号在时域的卷积可以转化为求两者在频域的乘积后再反变换,同理在频域的卷积等时域的乘积。而信号的频域求解有快速傅里叶FFT算法。

    卷积与傅里叶变换有着密切的关系。利用这一点性质,即两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,能使傅里叶分析中许多问题的处理得到简化。

    由卷积得到的函数f*g 一般要比f 和g 都光滑。特别当g 为具有紧支集的光滑函数,f 为局部可积时,它们的卷积f * g 也是光滑函数。利用这一性质,对于任意的可积函数f,都可以简单地构造出一列逼近于f 的光滑函数列,这种方法称为函数的光滑化或正则化。

    卷积的概念还可以推广到数列、测度以及广义函数上去。

    1. 采样定理

    采样定理,又称香农采样定理,奈奎斯特采样定理,是信息论,特别是通讯与信号处理学科中的一个重要基本结论。E.T.Whittaker(1915年发表的统计理论),克劳德·香农Harry Nyquist都对它作出了重要贡献。另外,V.A.Kotelnikov也对这个定理做了重要贡献。

      采样是将一个信号(即时间或空间上的连续函数)转换成一个数值序列(即时间或空间上的离散函数)。采样定理指出,如果信号是带限的,并且采样频率高于信号带宽的两倍,那么,原来的连续信号可以从采样样本中完全重建出来。

    带限信号变换的快慢受到它的最高频率分量的限制,也就是说它的离散时刻采样表现信号细节的能力是有限的。采样定理是指,如果信号带宽不到采样频率的一半(即奈奎斯特频率),那么此时这些离散的采样点能够完全表示原信号。高于或处于奈奎斯特频率的频率分量会导致混叠现象。大多数应用都要求避免混叠,混叠问题的严重程度与这些混叠频率分量的相对强度有关。

    1. 双线性变换法设计IIR低通数字滤波器的基本原理

    双线性变换法设计数字滤波器,采用了二次映射的方法,就是先将整个s平面压缩到s1平面的一个的横形条带范围内,然后再将这个条带映射到z平面上,就能建立s平面到z平面的一一对应关系。对于低通数字滤波器,映射关系为

    (1)

    其中T为抽样周期。

    用双线性变换法设计低通IIR数字滤波器的基本步骤,首先根据设计要求确定相应的模拟滤波器的传递函数,再应用(1)式得数字滤波器的传递函数

             (2)

    通常可以给定的参数为:低通数字滤波器通带边界频率、阻带边界频率和对应的通带衰减函数、阻带衰减函数。s1平面中的模拟角频率与数字角频率的关系为线性关系,在计算模拟滤波器的阶数N、极点si和传递函数之前,应作预畸变处理

       (3)

    模拟滤波器的阶数N、极点si和传递函数的计算方法与冲激响应不变法相同,可以采用Butterworth逼近或Chebyshev逼近。

    Chebyshev 滤波器则比Butterworth 滤波器的截止特性要好,在期望通带下降斜率大的场合,应使用椭圆滤波器或切比雪夫滤波器。在MATLAB下可使用cheby2函数设计出切比雪夫II型IIR滤波器。但阻带处的幅值有振荡。对于数字滤波器而言,可以采用不同阶数逼近相应滤波器,滤波器性能还与滤波器的阶数有关,一般而言,阶数越高,则逼近越精确,但计算代价也随之上升,所以性能与代价总需要寻求一个平衡点。本设计用Chebyshev 滤波器。

    1. 双线性变换法设计IIR高通、带通、带阻数字滤波器的基本原理

    由于双线性变换法获得的数字滤波器频率响应特性中不会出现混叠现象,因此可以适用于高通、带通和带阻滤波器的设计。IIR数字滤波器的设计通常要借助于模拟低通滤波器的设计,由原型低通滤波器到其他形式(高通、带通、带阻)IIR数字滤波器的频带变换有模拟频带变换法和数字频带变换法。

    (1)模拟频带变换法

    首先将给定的对数字滤波器(DF)的技术要求转换为一个低通模拟滤波器(AF)的技术要求,根据这种要求用某种逼近设计出原型的低通模拟滤波器(LP AF),计算出模拟滤波器的阶数N、极点si和传递函数,再按照双线性变换的变换关系,将模拟滤波器的传递函数转换为数字滤波器的传递函数

    (2)数字频带变换法

    首先将给定的对数字滤波器(DF)的技术要求转换为一个低通模拟滤波器(AF)的技术要求,用双线性变换法将原型的低通模拟滤波器(LP AF)映射为低通数字滤波器,再将数字低通滤波器根据相应的变换公式经频带变换到各型数字滤波器。

    (3)IIR数字滤波器的设计

    可利用MATLAB提供的函数直接设计相应的数字滤波器。

    五、实验论证方案

    本次课程设计是要对生活中常见的语音信号进行分析处理。信号分析处理要经过语音信号的采集、时域和频域波形的分析,设计干扰信号,原始信号和干扰信号的融合,IIR滤波器的设计,滤波等几个步骤。

    1. 语音信号的录入与打开

    方案一:在Matlab中,waveread函数用于录入语音,语音必须是.wav格式。

    方案二:在高版本的Matlab中,也可以使用audioread函数来替换waveread函数,语音格式可以是.mp3格式。

    本次设计中我们使用的是Matlab 2010版,所以使用方案一进行语音信号的采集。

    语音打开所用的函数为sound(y,fs,bits),用于对声音的回放,向量y表示语音信号,fs表示采样频率,bits表示采样位数。

    1. 语音信号的频域分析

    本次课程设计主要对语音信号进行快速傅里叶变换(FFT)来分析其频域特性。

    Matlab的信号处理工具箱中的函数FFT可用于对序列的快速傅里叶变换分析,其调用格式是y=fft(x,N),其中,x是序列,y是序列的FFT变换结果,N为整数,代表做N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x长度大于N,则截断x使之长度为N。

    一般FFT程序中所用数据点数与原含有信号数据点数相同,这样的频谱图具有较高的质量,可减小因补零或截断而产生的影响。

    1. 干扰噪声的设计

    噪声可以是随机产生的白噪声或者是正余弦噪声。通过分析可以得到原始语音信号的频率范围,为便于后续滤波器的设计我们设计的滤波器频率为11000。幅度选择0.017V,幅度大小合适。

    方案一:正弦和余弦噪声的频谱是规则的两条竖线,频率和幅度可根据自己设定的参数进行调整,信号容易产生切杂波容易滤去。

    方案二:Matlab中,随机产生的噪声用y=rand(a,b)实现,其噪声频谱是不规则的,且滤除时较困难。

    为方便后续滤波器的设计,我们采用方案一的干扰噪声设计方法。

    1. 数字滤波器的设计
    2. 模拟滤波器原理

    方案一:采用巴特沃斯滤波器。巴特沃斯滤波器的频率特性曲线,无论在通带内还是阻带内都是频率的单调函数。因此,当通带的边界处满足指标要求时,通带内肯定会有裕量。巴特沃斯滤波器通带、阻带均无波动,结构简单,阻带衰减速度较慢。同等条件下巴特沃斯滤波器的阶数最高。

    方案二:采用切比雪夫滤波器。切比雪夫滤波器的幅频特性具有等波纹特性。有两种形式:在通带内等波纹、在阻带内单调的是切比雪夫I型滤波器,在通带内单调、在阻带内等波纹的是切比雪夫II滤波器。切比雪夫滤波器通带有波动,边带仍为单调上升函数,结构复杂,边带截止率可以做的较陡峭。切比雪夫滤波器和理想滤波器的频率响应曲线之间的误差最小。

    本次设计我们选择阶数小,阻带等波纹的切比雪夫Ⅱ型的数字滤波器。

    1. 模拟滤波器数字化原理

    模拟滤波器转化为数字滤波器在工程上常用的有冲激响应不变法和双线性变换法。

    方案一:冲激响应不变法是一种时域上的转换方法,它是数字滤波器的单位取样响应在抽样点上等于模拟滤波器的单位冲激响应,这种方法s和z的关系是:。该方法的优点是频率坐标变换时线性的数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,时域特性逼近好;缺点是会产生频谱混叠现象,适合低通、带通滤波器的设计,不适合高通、带阻滤波器的设计。

    方案二:双线性变换法为了克服频谱混叠现象,采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到π/T之间,再用转换到Z平面上。双线性变换法中,s和z的关系是:。该方法克服了频谱混叠现象,但带来了频率坐标变换的非线性:。

    本次设计中需要分析频谱特性,为避免产生频谱混叠现象而且需要设计带阻滤波器,因而我们采用了方案二。

    1. 滤波器参数设计方案

    按照之前的原始语音信号频谱图和所加入的噪声频率,对滤波器进行设计以及参数的确定。包括通带截止频率wp、阻带截至频率ws、通带最小衰减增益Ap,阻带最大衰减增益As。

    本次设计的低通、带通、带阻三种滤波器加以分析: 其中带通滤波器是由高通滤波器和低通滤波器组成,带阻滤波器是由低通滤波器和高通滤波器组成,我们的原始语音信号主要集中在低频,所以三种滤波器都可以有效的滤除噪声。

    六、实验结果及分析

    利用MATLAB软件对语音信号进行频谱分析、对加入噪声的信号进行频谱分析、设计合适的滤波器滤除噪声。

    1. 语音信号的录入和分析
    2. 音频信号采样

    用电脑所带的录音工具录制一段录音,使用waveread函数读取语音信号的数据,用sound函数播放语音。

    程序如下:

    %音频信号采样

    [y1,fs,bit] = wavread('zhou.wav');

    figure(1);

    subplot(2,1,1);plot( y1 );

    title( '原语音信号时域波形图' );

    xlabel( '单位/t' );ylabel( '幅度' );

    1. 频谱特性分析:

      利用MATLAB对语音信号进行FFT分析,并画出原语音信号的时域波形图和频谱特性图。

      %采样后进行fft得到频域

      N= length(y1);

      f1= (0:N-1)*fs/N;

      y2 = fft (y1,N);

      subplot(2,1,2);plot( f1, abs(y2) );

    axis([-10000 20000 0 15000]);

    title( '原语音信号频域波形图' );

    xlabel('单位/hz');ylabel('幅度');

    1. 运行结果如下:

    图1-1原始语音信号频谱图及FFT频谱图

    1. 结果分析如下:

    从图1-1可以看出,原始语音信号的频率基本上集中在5kHz以内。其中原始语音信号FFT频谱和原始语音信号频谱的区别是:前者是频率为1递增的频谱,而后者是以f1= (0:N-1)*fs/N递增,后者是在"不小于原始信号的频率(采样定理)"上完全展开的频谱。

    1. 加入噪声信号
    2. 干扰信号设计:

    选取余弦函数产生一个噪声信号,其频率为1.1kHz。对加噪后的语音信号进行播放。

    程序如下:

    %所加的干扰信号

    t=0:1/fs:(N-1)/fs;

    y3=0.17*cos(2*pi*11000*t);

    figure(2); subplot(2,1,1);plot(y3);

    title( '干扰信号时域波形图' );

    xlabel( '单位/t' ); ylabel( '幅度' );

     

    1. 干扰信号和原始信号的融合

    程序如下:

    %加噪后的语音信号

    y1=y1(:,1); %将有y12维向量转化成1维向量

    y3=y3'; %y1是行向量,y3是列向量,需转置

    y5=y1+y3;

    figure(3);subplot(2,1,1);plot(y5);

    title( '加噪之后信号时域图' );

    xlabel('单位/t');ylabel('幅度');

    1. 加噪后信号频域分析

    对其做FFT,进行时域和频域的分析,比较加噪前后语音信号的波形及频谱。

    程序如下:

    y6= fft (y5);

    subplot(2,1,2);plot( f1, abs(y6) );

    axis([-10000 20000 0 50000 ]);

    title( '加噪之后信号频谱图' );

    xlabel('单位/hz');ylabel('幅度');

    1. 运行结果如下:

    图2-1 加噪后的信号时域波形图

    1. 结果分析:

    在加入频率为1.1kHz的余弦噪声后,绘制其时域波形图和频谱图,比较图1-1和图2-1可发现,频谱图可以直观的看出所加噪声的频率和谱线。在播放音频时可以明显听到有刺耳的噪声。

     

    1. 滤波器的设计

    用双线性变换法设计了切比雪夫Ⅱ型低通、带阻、带通IIR滤波器,并分别绘制滤波器的幅频图。

    1. 切比雪夫Ⅱ型低通滤波器:

    设计低通滤波器时所取通带截止频率取fp=4kHz,阻带截止频率取fs=8kHz,通带最大衰减波纹Rp=1,阻带最小衰减As=80。确定参数后用双线性变换法转换为数字低通滤波器 。

    程序如下:

    % 低通滤波器设计

    wp=2*pi*4000/fs;ws=2*pi*8000/fs;

    omegap=2*fs*tan(wp/2);

    omegas=2*fs*tan(ws/2);

    rp=1;as=80;

    [N,omegaC]=cheb2ord(omegap,omegas,rp,as,'s');

    [b,a]=cheby2(N,as,omegas,'s');

    [bz,az]=bilinear(b,a,fs);

    [h,w]=freqz(bz,az);

    w0=[omegap,omegas];

    hx=freqz(bz,az,w0);

    dbhx=-20*log10(abs(hx));

    figure(4);

    subplot(2,1,1);plot(w/(2*pi)*fs,20*log10(abs(h)));

    title('切比雪夫ii型低通滤波器幅频响应');

    y7=filter(bz,az,y5);

    figure(5);subplot(2,1,1);plot(y7);

    title( '切比雪夫ii型低通滤波器滤波后之后信号时域图' );

    xlabel('单位/t'); ylabel('幅度');

    y8 = fft (y7);

    subplot(2,1,2);plot(f1,abs(y8));

    axis([-10000 20000 0 15000 ]);

    title( '切比雪夫ii型低通滤波器滤波后之后信号频域图' );

    图3-1 低通滤波器

    图3-2 低通滤波器滤波后语音信号的频谱图

    1. 切比雪夫Ⅱ型带阻滤波器:

    设计带阻滤波器时通带上截止频率取fp1=3kHz,通带下截止频率取fp2=20kHz阻带下截止频率取fs1=6kHz,阻带上截止频率取fs2=1.5kHz,,通带最大衰减波纹Rp=1,阻带最小衰减As=100。确定参数后做频率预畸变化,用双线性变换法转换为数字带阻滤波器。

    程序如下:

    %带阻滤波器

    wp1=2*pi*3000/fs;wp2=2*pi*20000/fs;

    ws1=2*pi*6000/fs;ws2=2*pi*15000/fs;

    Rp=1;As=100;

    T=1/fs;

    omegap1=(2/T)*tan(wp1/2);

    omegap2=(2/T)*tan(wp2/2);

    omegap=[omegap1,omegap2];

    omegas1=(2/T)*tan(ws1/2);

    omegas2=(2/T)*tan(ws2/2);

    omegas=[omegas1,omegas2];

    [N,omegac]=cheb2ord(omegap,omegas,Rp,As,'s');

    [b,a]=cheby2(N,As,omegas,'stop','s');

    [bz,az]=bilinear(b,a,fs);

    [H,w]=freqz(bz,az);

    w0=[omegap,omegas];

    hx=freqz(bz,az,w0);

    dbhx2=-20*log10(abs(hx));

    figure(8);

    subplot(2,1,1);plot(w/(2*pi)*fs,20*log10(abs(H)));

    title('切比雪夫ii型带阻滤波器幅度响应');

    xlabel('单位/hz');ylabel('幅度/db');

    y11=filter(bz,az,y5);

    figure(9);subplot(2,1,1);plot(y11);

    title( '切比雪夫ii型带阻滤波器滤波后之后信号时域图' );

    xlabel('单位/t');ylabel('幅度');

    y12 = fft (y11);

    subplot(2,1,2);plot(f1,abs(y12));

    axis([-10000 20000 0 15000 ]);

    title( '切比雪夫ii型带阻滤波器滤波后之后信号频域图' );

    xlabel('单位/t');ylabel('幅度');

    程序运行结果如下:

    图3-3 带阻滤波器

    图3-4 带阻滤波器滤波后语音信号的频谱图

    1. 切比雪夫Ⅱ型带通滤波器:

    设计带通滤波器时通带上截止频率取fp1=100Hz,通带下截止频率取fp2=4kHz,上阻带截止频率取fs1=10Hz,下阻带截止频率取fs2=10kHz,通带最大衰减波纹Rp=1,阻带最小衰减As=60。确定参数后做频率预畸变化,用双线性变换法转换为数字带通滤波器。

    程序如下:

    %带通滤波器

    wp1=2*pi*100/fs;wp2=2*pi*4000/fs;

    ws1=2*pi*10/fs;ws2=2*pi*10000/fs;

    Rp=1;As=60;

    T=1/fs;

    omegap1=(2/T)*tan(wp1/2);

    omegap2=(2/T)*tan(wp2/2);

    omegap=[omegap1,omegap2];

    omegas1=(2/T)*tan(ws1/2);

    omegas2=(2/T)*tan(ws2/2);

    omegas=[omegas1,omegas2];

    [N,omegac]=cheb2ord(omegap,omegas,Rp,As,'s');

    [b,a]=cheby2(N,As,omegas,'s');

    [bz,az]=bilinear(b,a,fs);

    [H,w]=freqz(bz,az);

    w0=[omegap,omegas];

    hx=freqz(bz,az,w0);

    dbhx1=-20*log10(abs(hx));

    figure(4);subplot(2,1,2);plot(w/(2*pi)*fs,20*log10(abs(H)));

    title('切比雪夫ii型带通滤波器幅度响应');

    xlabel('单位/hz');ylabel('幅度/db');

    y9=filter(bz,az,y5);

    figure(7);subplot(2,1,1);plot(y9);

    title( '切比雪夫ii型带通滤波器滤波后之后信号时域图' );

    xlabel('单位/t');ylabel('幅度');

    y10 = fft (y9);

    subplot(2,1,2);plot(f1,abs(y10));

    axis([-10000 20000 0 15000 ]);

    title( '切比雪夫ii型带通滤波器滤波后之后信号频域图' );

    xlabel('单位/t');ylabel('幅度');

    程序运行结果如下:

    图3-5 带通滤波器

    图3-6 带通滤波器滤波后语音信号频谱图

    1. 结果对比分析:

    在切比雪夫Ⅱ型下设计的低通、带通、带阻三种滤波器中,分别将图3-2、3-4、3-6与图1-2比较后发现,三种滤波器都可以有效的达到滤波效果。其中滤波效果比较好的是带阻滤波器和低通滤波器,对原始语音影响最小,而带通滤波器效果是三种中最差的,因为带通滤波器的下阻带截止频率和通带下截止频率的取值会对原语音信号造成影响,使信号失真较多。

    本次设计中Rp、As的取值是经过调试后能够使滤波器性能达到最优的值,通过调试可以得知,在设计滤波器中,阶数N越大,滤波器结构越复杂,精度越高,滤波效果越好。

    七、课程设计中遇到的问题及解决方法

    1. 问题:对原始信号作频谱分析时,画出的频谱图关于横轴对称,且成镜像分布。

    由于使用plot函数画图时没有使用abs(y)来取绝对值,所以频谱的幅值有正有负;而且没有设置横纵坐标轴的范围,所以横轴值过大,频谱成镜像分布。通过查阅plot函数使用格式,修改程序plot(f,abs(y)),添加坐标轴设置函数axis([x1 x2 y1 y2]);grid,解决问题。

    1. 问题:添加噪声时添加不上,且运行时有错误提示噪声不能直接与语音信号相加。

    在Matlab中运行程序时,提示噪声与原语音不能直接使用"+"相加,上网查阅资料之后明白我们所录制的语音是二维的,而噪声是一维的,需要通过取原始语音信号的单声道信号和噪声信号相加,于是添加如下程序:

    y1=y1(:,1);

    y3=y3';

    y5=y1+y3;

    1. 问题:在设置的余弦噪声中,频率与频谱图不相符,不清楚噪声的频率与频谱图是什么关系。

    在频谱图中,按照理论噪声的频谱图应该与设置的频率相符,但我们最开始时设置的噪声频率与所画出的频谱图有较大差距,修改程序:f1= (0:N-1)*fs/N; 后所设置的频率即为频谱图上所显示的频率。

    1. 问题:设计带通滤波器时,下阻带截止频率和通带下截止频率始终会对原始信号造成影响。

    调试参数时Rp、As与带阻和低通都有较大差距。将加噪后的语音信号经过带通滤波器,使滤波器滤除原始信号,留下噪声信号,再用加噪信号减去噪声信号可得到原始语音,多次调整fp1和fs1使其到最佳数值,尽量减少对原始噪声的影响。

    八、课程设计总结

    通过这次课设,使我对滤波器有了更深的认识,特别是滤波器参数对滤波器性能的影响,因为通带截止频率、阻带截止频率、通带衰减、阻带衰减都要影响滤波器的阶数,而滤波器的阶数越大,其选频特性就越好。并且不同的滤波器类型可达到的滤波效果也不同,要根据衰减系数选择合适的滤波器。

    在做这次课设的过程中,也遇到了些困难,尤其是GUI界面的设计。由于起初对GUI界面设计不了解,花费了些时间在学习使用方面,例如希望可以在界面中播放滤波前后的信号,才知道不同的function是独立执行的,如果想在一个function中使用其他function中变量的值,则需要用save和load来分别保存和调用变量。

    这次课设使我认识到matlab软件功能的强大,可以完成各类信号处理相关的功能,我的这个课题只是小小的一部分,今后我还需更加努力完善自己,用会,用精matlab来分析解决问题,将理论联系实际,获得更大提高。

    这期间遇到了很多困难和问题,但是通过自己的探索也学到了很多东西,不仅重新复习了书本上滤波器部分的原理,对其有了新的理解,而且又学到了很多书上没有的知识。通过程序编写过程中产生的各种各样的错误提示,亲自动手去查资料才知道错误所在,也正是这个探索的过程让我有了更大的进步。但设计中还存在很多不足的地方,比如设计的滤波器方法和类型比较单一,没有做更多的滤波效果比较。

    通过这次课程设计,我深刻体会到应用Matlab进行语音信号处理与我们所学课程及专业的紧密关联,也让我体会到理论与实际的结合的重要性和两者之间的差别,也学到了课堂上学不到的东西。

    九、参考文献

    [1] 高西全、丁玉美编著,数字信号处理。西安:西安电子科技大学出版社,2008.

    [2]丁玉美、高西全编著,数字信号处理学习指导。西安:西安电子科技大学出版社,2001.

    [3]郑君里等编,信号与系统。北京:高等教育出版社,2000.

    [4]刘树棠译,数字信号处理——使用MATLAB。西安:西安交通大学出版社,2002.

    [5]导向科技编著,MATLAB程序设计与实例应用。北京:中国铁道出版社,2001.

    [6]罗军辉等编著,MATLAB7.0在数字信号处理中的应用。北京:机械工程出版社,2005.

    [7]陈怀琛等编著,MATLAB及在电子信息课中的应用。北京:电子工业出版社,2002.

    [8]胡广书编组,数字信号处理——理论、算法与实现。北京:清华大学出版社,2002.

    [9]梁虹等编,信号与线性系统分析——机遇MATLAB的方法与实现。北京:高等教育出版社,2006.

    [10]刘卫国主编,MATLAB程序设计与应用(第二版)。北京:高等教育出版社,2006.

     

    展开全文
  • 数字信号处理:IIR数字滤波器设计及软件实现

    千次阅读 多人点赞 2020-05-20 10:30:45
    数字信号处理:IIR数字滤波器设计及软件实现 1.实验原理 设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成...
  • 数字信号处理:FIR数字滤波器设计及软件实现

    千次阅读 多人点赞 2020-06-02 23:04:06
    数字信号处理:FIR数字滤波器设计及软件实现 一、实验目的 (1)掌握用窗函数法设计FIR数字滤波器的原理和方法。 (2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法。 (3)掌握FIR滤波器的快速卷积实现...
  • 数字信号处理——绪论总结

    千次阅读 多人点赞 2020-09-13 16:50:59
    数字信号处理绪论总结,包括介绍背景;信号处理、数字信号处理;数字信号处理学科概览;数字信号处理的特点;数字信号处理的局限性;数字信号处理的应用。
  • Go版GTK:信号处理

    万次阅读 2018-02-03 21:02:42
    接下来我们一起学习GTK的信号处理。 GTK采用了信号与回调函数来处理窗口外部传来的事件、消息或信号。当信号发生时,程序自动调用为信号连接(注册)的回调函数。 学习图形界面编程,我们会经常接触到“信号”这个...
  • matlab脑电信号处理

    2013-03-06 15:29:49
    利用matlab工具软件对脑电信号处理代码实例,简单易懂,能让你短时间内熟悉matlab对脑电信号分析。
  • Linux中信号与信号处理

    千次阅读 2017-01-02 13:50:26
    Linux中信号与信号处理 信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件...
  • 基于MATLAB的语音信号处理

    万次阅读 多人点赞 2018-07-15 01:21:20
    基于MATLAB的语音信号处理摘要:语音信号处理是目前发展最为迅速的信息科学研究领域中的一个,是目前极为活跃和热门的研究领域,其研究成果具有重要的学术及应用价值。语音信号处理的研究,对于机器语言、语音识别、...
  • Linux信号、信号处理信号处理函数

    千次阅读 2011-04-16 15:44:00
    信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件,还可以给进程传递...
  • linux信号处理 信号 定时器

    千次阅读 2011-12-27 22:06:02
    2. signal信号处理机制 2 3. sigaction信号处理机制 4 3.1. 信号处理情况分析 4 3.2. sigaction信号处理注册 5 3.3. sigprocmask信号阻塞 7 4. 用程序发送信号 9 4.1. kill信号发送函数 9 4.2. sigqueue信号...
  • 无线电数字信号处理软件无线电技术综述[图] 随着无线电数字信号处理技术的发展,以及新标准和协议不断公布,无线电通信在迅猛发展的同时,带来了新的挑战和机遇。在数字技术得到快速发展的同时,软件无线电...
  • 设计数字低通滤波器、高通滤波器、带阻滤波器,用MATLAB软件对含噪心电信号分别进行高通、带阻和低通滤波等处理,将心电信号中的低频基线漂移、50Hz工频高频和高频杂波进行滤除。 3、 通过观察对含噪心电图信号的...
  • linux 信号&信号处理

    千次阅读 2011-01-20 15:57:00
    信号(signal)是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序机会接受其他程序活终端发送的命令(即信号)。应用程序收到信号后,三种处理方式:忽略,默认,或捕捉。进程收到一个...
  •  这样信号的特点是一个平均值,信号在某一数值范围附近上下波动  C、缺点:  对于测量速度较慢或要求数据计算速度较快的实时控制不适用  比较浪费RAM [cpp]   view plain   copy   // eg.   #define N ...
  • Python信号处理

    千次阅读 2017-04-30 19:35:00
    SIGKILL信号是无法在程序内部捕获的,一旦发送SIGKILL信号给进程,Linux就将进程停止在那里。Python自己并不检查SIGKILL,而是直接把底层标准C的运行时错误返回。
  • 嵌入式语音信号处理入门篇

    万次阅读 2020-01-18 22:17:36
    刚接触语音信号处理,是从下面这几个概念开始的,这几个概念明白了,基本上也就明白原始的语音信号是什么,也就是知道我们要处理啥样的信号了。 等这篇文章的内容明白后,就可以开始进入正题。 PCM和WAV PCM(Pulse ...
  • 数字信号处理是什么 数字信号处理兴起和发展的起因: 计算机的发明:数字信号处理的任务就是用计算机来处理现实世界中的信号 FFT算法的出现:信号在时域和频域展现不同的特性,傅立叶变换就是信号从时域通向频域...
  • 基于MATLAB噪声语音信号处理算法设计

    万次阅读 多人点赞 2019-04-13 23:56:05
    获取项目源文件,联系Q:1415736481,可指导毕设,课设 ...课题基于MATLAB噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域、频域分析和滤波。通过理论推导得出相应结论,再...
  • Linux信号处理函数

    千次阅读 2016-04-22 17:18:58
    ...1. 信号概念  ...信号是进程在运行过程中,由自身...信号是硬件中断的软件模拟(软中断)。每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文件中定义,也可以通过在shell下键入ki
  • 信号处理中为什么用复信号 (2013-03-24 18:25:55)标签: 杂谈分类: 信号处理 此文章已于 18:28:13 2013/3/24 重新发布到 senlinlaoren的博客信号处理中为什么用复信号 【何人(公司)所著】:Richard ...
  • 【摘要或目录】:一份讲稿,图文并茂,语言生动诙谐,通俗易懂,从介绍复数的表示,到欧拉公式的数学模型,引出为什么用复数表示实信号,通读全文,让一个初学者彻底理解在数字通信系统中为什么使用正交信号,正交...
  • Linux信号与信号处理

    万次阅读 2008-09-08 20:00:00
    信号(signal)是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序机会接受其他程序活终端发送的命令(即信号)。应用程序收到信号后,三种处理方式:忽略,默认,或捕捉。进程收到一个信号后,...
  • Linux信号机制分析和信号处理函数

    千次阅读 2016-04-20 16:57:53
    【摘要】本文分析了Linux内核...最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。 1.信号本质 软中断信号(signal,又简称为信号)用来通知进程
  • 5分钟理解相机ISP(图像信号处理

    万次阅读 多人点赞 2020-01-29 22:33:40
    凡是和图像领域工作的人,都会经常听到ISP(Image Signal Process,图像信号处理),知道ISP对图像质量非常重要。比如华为和小米竞争手机拍照和录像效果,主要的竞争领域就是ISP;做AI(Artificial In...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 207,217
精华内容 82,886
关键字:

信号处理软件有哪些