倒谱分析 matlab,復倒谱的计算和matlab实现1.doc

復倒谱的计算和matlab实现1

复倒谱的计算 和matlab实现

一、计算原理 在复倒谱分析中,z变换后得到的是复数,所以取对数时要进行复对数运算。这时存在相位的多值性问题,称为“相位卷绕”

设信号为

则其傅里叶变换为

对上式取复对数为

则其幅度和相位分别为

上式中,虽然 , 的范围均在 之内,但 的值可能超过 范围。计算机处理时总相位值只能用其主值 表示,然后把这个相位主值“展开”,得到连续相位。所以存在情况:

(k为整数)

此时即产生了相位卷绕。这会是后面求复倒谱以及由复倒谱恢复语音带来不确定性产生错误

改进方法

最小相位信号法

适用条件:

被处理的信号想x(n)必须是最小相位信号。实际上许多信号就是最小相位信号,或可以看作是最小相位信号。语音信号的模型就是极点都在z平面单位圆内的全极点模型,或者极零点都在z平面单位圆内的极零点模型。

设信号x(n)的z变换为X(z)=N (z)/ D(z) ,则有

根据z变换的微分特性有

若x(n)是最小相位信号,则 必然是稳定的因果序列。

由Hilbert变换的性质可知,任一因果复倒谱序列都可分解为偶对称分量和奇对称分量之和:

其中

这两个分量的傅里叶变换分别为 的傅里叶变换的实部和虚部。

所以:

此即复倒谱的性质3,也就是说一个因果序列可由其偶对称分量来恢复。如果引入一个辅助因子g(n),上式可写作

其中:

原理框图:

2.递归法

同样只能适用于 x(n)是最小相位信号的情况。

根据z变换的微分特性得 ;

对上式求逆z变换,根据z变换的微分特性,有

所以:

设x(n)是最小相位序列,而最小相位信号序列一定为因果序列 ,所以有

;

由于 及 ,可得递推公式

;

递归运算后由复倒谱定义:

可知:

同理 若x(n)是最大相位序列:

其中的 。

二.Matlab实现

M程序clear all;

%倒谱

[s,fs,nbit]=wavread('yuyin.wav'); %读入一段语音

b=s'; %将s转置

x=b(5000:5399); %取400点语音

N=length(x); %读入语音的长度

S=fft(x); %对x进行傅立叶变换

Sa=log(abs(S)); %log为以e为底的对数

sa=ifft(Sa); %对Sa进行傅立叶逆变换

ylen=length(sa);

for i=1:ylen/2

sa1(i)=sa(ylen/2+1-i);

end

for i=(ylen/2+1):ylen

sa1(i)=sa(i+1-ylen/2)

end

%绘图

figure(1);

subplot(2,1,1);

plot(x);

axis([0,400,-0.5,0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值