数字信号处理 基础知识 对比回顾
1.非周期序列
非周期序列傅里叶变换FT:
非周期序列傅里叶逆变换IFT:
连续时间信号的傅里叶变换FT:
连续时间信号的傅里叶逆变换IFT:
2.非周期序列傅里叶变换FT性质:
(1).周期性
(2).线性
(3).时移与频移
(4).对称性
共轭对称序列的实部是偶函数,虚部是奇函数
eg:
x(n) = = = cos(wn) + j sin(wn)
共轭反对称序列的实部是奇函数,虚部是偶函数。
如果为实数,所以,FT变换共轭对称,实部为偶函数,虚部为奇函数。
(5).时域卷积定理
(6).频域卷积定理
(7).帕斯维尔定理
3.周期序列
周期序列的离散傅里叶级数DFS
离散傅里叶变换DFT:
离散傅里叶逆变换IDFT:
(1)FT与DFS之间关系如下:
(2)连续时间的傅里叶级数与连续时间傅里叶变换之间的关系:
(3)离散信号的傅里叶变换与模拟信号的傅里叶变换关系:
(4)DFT与Z变换之间关系:
4.时域采样和频域采样
时域采样,对采样率有要求限制,奈奎斯特定理。
频域采样,如果序列x(n)的长度为M,则频域采样点数N>=M,X(k)才有可能恢复x(n),否则产生时域混叠。
5.截断效应、谱间干扰、相位相干
截断后,使原来的谱线向附近频率区域展宽泄露,谱分辨率变低,模糊。称为频谱泄露。
主谱线两边形成很多旁瓣,引起不同频率分量间的干扰,影响频谱分辨率,称为谱间干扰。
相位相干:振动频率相同、相差恒定的叫做相干性。
6.IIR数字滤波器和FIR数字滤波器
经典数字滤波器可以分为IIR数字滤波器和FIR数字滤波器。
FIR数字滤波器的实现
这类滤波器对于脉冲输入信号的响应最终趋向于0
(1)FIR滤波器的设计比较简单,设计一个数字滤波器去逼近一个理想滤波器,理想有限带宽滤波器的时域是无限序列,通常用窗函数法去截取。
(2)非递归的,阶数一般比同性能的IIR滤波器要高5~10倍,延时大些,它只与过去和现在的样本点输入有关,稳定性好,脉冲响应为有限序列。
(3)严格的线性相位,不同频率分量的信号通过时,它们的时间差不变。
IIR数字滤波器的实现
由于无限脉冲响应滤波器中存在反馈回路,因此对于脉冲输入信号的响应是无限延续的。
(1)可以借助成熟的模拟滤波器,将模拟滤波器的公式转换成数字滤波器的公式。
(2)它是递归的,它不仅与过去和现在的样本点输入有关,还与过去的输出点有关,不稳定, 脉冲响应为无限序列。
(3) 非严格线性相位,用于相位信息不敏感的音频信号上。
7.三种滤波器性能对比
切比雪夫滤波器:滚降性好,缺点有通带波纹
椭圆滤波器: 过渡带最窄,选择性好,通带和阻带是等波纹
巴特沃斯滤波器:通带最为平坦
贝塞尔滤波器:阶跃响应最好,不会有过冲或者振铃现象。
8.同态处理:将非线性处理问题转化为线性处理问题。另外,线性预测分析技术也可以用来解卷积
eg:乘法转成加法
9.功率谱
稳态信号
1.周期图法:一种信号功率谱密度估计方法。它的特点是:为得到功率谱估值,先取信号序列的离散傅里叶变换,然后取其幅频特性的平方并除以序列长度N
2.平均周期图法:即先把信号序列分为若干段,对每段分别计算其周期图,然后取各个周期图的平均作为功率谱的估值。平均周期图可以减小随机起伏,但是,如果信号序列不 是足够长,由于每段序列长度变短,功率谱估值对不同频率成分的分辨能力也随之下降。
3.P.D.韦尔奇提出一种把加窗处理与平均处理结合起来的方法。先把分段的数据乘以窗函数(进行加窗处理),分别计算其周期图,然后进行平均。韦尔奇方法是较常用的一种计算方法。为了得到较好的功率谱估值,加窗和平均处理均应兼顾减小随机起伏和保证有足够的谱分辨率两个方面。
10.窗函数对比:
矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。
汉宁窗主瓣加宽并降低,旁瓣则显著减小。
海明窗加权的系数能使旁瓣达到更小,但是比汉宁窗衰减速度慢。
高斯窗谱无负的旁瓣,高斯富谱的主瓣较宽,故而频率分辨力低
布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高。
三角窗与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。
11.傅里叶变换对整个频带有相同的分辨率,离散小波变换 低频时 较高的频域分辨率, 高频时 较低的频域分辨率,适合特定信号。
12.mp3编码中 有描述 频谱的平坦度公式,内积与求和的比值。
13.短时语音片段
fn[m] = x[m]*w[n-m] x[m]在时刻n的短时段
x(n)与窗函数w(n)做卷积,对应累积值
14.自相关与互相关
xcorr(s,s); 默认的MaxLag为length(s) -1:M-1。输出序列为2*M-1
xcorr(s,s,MaxLag); 原序列向左边偏移-MaxLag,逐步向右偏移MaxLag,互相关的序列为2*MaxLag-1
xcorr(s,s,MaxLag) 可以由xcorr(s,s)输出序列截取获得
1.xcorr
C=xcorr(A,B),求向量A与B的互相关系数。如果A和B都是长度为M的向量,则返回2*M-1个胡相关系数C。
如果A和B的长度不一样,短的向量补0,然后计算互相关。如果A是行向量,C也是行向量。
xcorr(A),如果A是一个向量,则求自相关序列。如果A是一个M*N的矩阵,则求出的结果为2M-1行N^2列的自相关序列。延迟为0
的点位于该序列的中间。
xcorr(A,MaxLag),MaxLag=M-1,M为向量A的长度。求延迟为-MaxLag到MaxLag之间的相关函数。
[c,lags]=xcorr(A,MaxLag,ScaleOpt);返回的lags为延迟下标
ScaleOpt为归一化选项:'biased':自相关序列乘以1/M ;‘unbiased’:自相关序列乘以 1/(M-abs(lags))
'coeff':归一化序列让延迟为0的自相关序列为1.
‘none’:不归一化
例子: s=[1 2 3];
r=xcorr(s);
r =3.0000 8.0000 14.0000 8.0000 3.0000
上面的矩阵,M=3,最后得到5个结果,其中第三个是自己和自己相乘,最后相加的结果,值最大1*1+2*2+3*3=14。而第二个和
第四个分别是间隔正负1的结果也就是1*2+2*3=8,2*1+3*2=8。第1个和第五个分别是间隔正负2,也就是1*3=3,3*1=3。
可见:xcorr默认的MaxLag=M-1=2.ScaleOpt默认为none.
MaxLag=2;
r=xcorr(s,MaxLag,'biased');
r =1.0000 2.6667 4.6667 2.6667 1.0000
相当于乘以1/3
MaxLag=2;
[r,lags]=xcorr(s,MaxLag,'unbiased');
r=3.0000 4.0000 4.6667 4.0000 3.0000
abs(lags)= 2 1 0 1 2
相当于乘以1/(M-abs(lags)),第一个为1/(3-2)=1; 1/(3-1); 1/(3-0);1/(3-1);1/(3-2)
MaxLag=2;
[r,lags]=xcorr(s,MaxLag,'coeff'); (注该方法相当于修正的自相关函数)
r=0.2143 0.5714 1.0000 0.5714 0.2143
相当于r=r./r(M) 即3/14=0.2143 8/14=0.5714, 14/14=1.00;
2.autocorr
[acf,lags,bounds] = autocorr(y)
[acf,lags,bounds] = autocorr(y,numLags,numMA,numSTD)
计算随机时间变量y的自相关函数,当没有输出参数,将画出在置信区间的自相关函数。
numLags:为自相关函数的延迟,默认为min[20,length(y)-1];该函数忽略了延迟小于0的序列。