(完整版)复倒谱的计算和matlab实现1
matlab中cep函数

matlab中cep函数
在MATLAB中,cep函数是用于计算信号的倒谱(cepstrum)的函数。
倒谱是一种在信号处理和语音处理中常用的频域分析方法,它可以提取信号的周期性和共振特性。
MATLAB中的cep函数的语法如下:
matlab.
c = cep(x)。
c = cep(x, fs)。
c = cep(x, fs, 'window', win)。
c = cep(x, fs, 'window', win, 'order', p)。
其中,x是输入信号,fs是采样率(可选参数,默认为1),win是用于计算倒谱的窗函数(可选参数,默认为'hamming'),p 是倒谱系数的阶数(可选参数,默认为12)。
cep函数返回一个包含倒谱系数的向量c。
倒谱系数代表了信号
在频域上的特征,可以用于声音识别、语音合成、语音增强等应用。
使用cep函数时,可以根据需要选择合适的窗函数和倒谱阶数。
常用的窗函数有'hamming'、'hanning'、'rectwin'等,倒谱阶数一
般取12或者更高。
需要注意的是,cep函数对输入信号进行了预处理,包括对输
入信号进行加窗、取对数、进行傅里叶变换等操作。
因此,在使用cep函数时,应该根据具体情况对输入信号进行预处理,以确保得
到准确的倒谱结果。
希望以上解释对你有帮助。
如果你还有其他问题,请继续提问。
(完整版)MATLAB)课后实验答案[1]
![(完整版)MATLAB)课后实验答案[1]](https://img.taocdn.com/s3/m/f6c08c5902d276a201292ece.png)
1 + e2 (2) z = 1 ln( x + 1 + x 2 ) ,其中 x = ⎡⎢ 2⎣-0.45 ⎦2 2 ⎪t 2 - 2t + 1 2 ≤ t <3 ⎨实验一MATLAB 运算基础1. 先求下列表达式的值,然后显示 MATLAB 工作空间的使用情况并保存全部变量。
(1) z = 2sin 8501221 + 2i ⎤5 ⎥(3) z = e 0.3a - e -0.3asin(a + 0.3) + ln 0.3 + a ,a = -3.0, - 2.9, L , 2.9, 3.03⎧t 2 0 ≤ t < 1 (4) z = ⎪t 2 - 11 ≤ t <2 ,其中 t=0:0.5:2.5 4⎩解:M 文件:z1=2*sin(85*pi/180)/(1+exp(2))x=[2 1+2*i;-.45 5];z2=1/2*log(x+sqrt(1+x^2))a=-3.0:0.1:3.0;3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)t=0:0.5:2.5;z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1)4.完成下列操作:(1)求[100,999]之间能被21整除的数的个数。
(2)建立一个字符串向量,删除其中的大写字母。
解:(1)结果:m=100:999;n=find(mod(m,21)==0);length(n)ans=43(2).建立一个字符串向量例如:ch='ABC123d4e56Fg9';则要求结果是:ch='ABC123d4e56Fg9';k=find(ch>='A'&ch<='Z');ch(k)=[]ch=⎣O2⨯3⎥,其中E、R、O、S分别为单位矩阵、随机矩阵、零矩S⎦阵和对角阵,试通过数值计算验证A=⎢⎥。
实验一MATLAB计算复积分和留数

实验一MATLAB计算复积分和留数复积分是对于二重积分或多重积分的进一步延伸,通过引入复数域,可以将积分的范围从实数域扩展到复数域。
留数理论是对于复变函数的一种重要工具,它用于计算闭合曲线内的奇点的积分值。
在MATLAB中,可以使用复积分和留数函数来计算复积分和留数。
首先,我们介绍复积分的计算方法。
在MATLAB中,可以使用int函数来计算复积分。
int函数的一般形式为:z = int(fun, a, b)其中,fun是对应的被积函数,a和b分别是积分的下限和上限。
下面我们以计算复数域内的复积分为例进行说明。
假设我们要计算下面的复积分:∫(1/z)dz其中,积分路径为从复平面上的点1到点-1、在MATLAB中,可以使用int函数完成计算:syms zfun = 1/z;a=1;b=-1;res = int(fun, a, b)上述代码中,我们首先定义了被积函数fun,并指定了积分的下限a和上限b。
然后使用int函数进行计算,并将结果保存在res变量中。
代码运行后,可以得到res的值,即复积分的结果。
接下来,我们介绍留数的计算方法。
在MATLAB中,可以使用residue函数来计算留数。
residue函数的一般形式为:[r, p, k] = residue(b, a)其中,b和a分别是分子和分母的多项式系数。
下面我们以计算函数(1/z^2)的留数为例进行说明。
假设我们要计算函数(1/z^2)在z=0处的留数。
在MATLAB中,可以使用residue函数完成计算:b=[01];a=[100];[r, p, k] = residue(b, a)上述代码中,我们首先定义了多项式分子b和分母a的系数。
然后使用residue函数进行计算,并将结果保存在r、p和k变量中。
r对应留数的向量,p对应极点的向量,k对应常数项。
代码运行后,可以得到r、p和k的值,即留数的结果。
综上所述,我们介绍了在MATLAB中计算复积分和留数的方法和函数。
MATLAB学习(4)——复数及其运算

MATLAB学习(4)——复数及其运算MATLAB学习(4)——复数及其运算复数及其运算A)复数的表⽰(1).x=a+bi,其中a称为实部,b称为虚部(2)或写成复指数的形式:x=re^(iθ)其中r称为复数的模,⼜记为 |x| ;θ称为复数的幅度,⼜记为Arg(x) 。
且满⾜r=√(a^2+b^2) ,tanθ=b/a第⼀种⽅式适合处理复数的代数运算,第⼆种⽅式适合处理复数旋转等涉及幅⾓改变的问题复数的构造:(1)直接构造法将复数看做完整的表达式输⼊例:x1=-1+i%实部虚部形式x2=sqrt(2)*exp(i*(3*pi/4))%复指数形式(2)符号函数构造法将复数看做函数形式,将实部和虚部看做⾃变量,⽤syms来构造,⽤subs对符号函数中的⾃变量赋值例:syms a b real%声明a b为实数型x3=a+b*i%实部虚部形式复数的符号表达subs(x3,{a,b},{-1,1})%代⼊具体值syms r ct real;%声明r ct为实数型x4=r*exp(ct*i);%复指数形式复数的符号表达subs(x4,{r,ct},{sqrt(2),3*pi/4})%代⼊具体值以上例⼦中复数均为 -1+1i复数矩阵的构造:(1)由复数元素构造例:a1=[sqrt(2)*exp((pi/4)*i) 1+2i 1+3i;sqrt(2)*exp((-pi/4)*i) 1-2i 1-3i](2)由实矩阵构造例:a2re=[1 1 1;1 1 1];%实部实矩阵a2im=[1 2 3;-1 -2 -3];%虚部实矩阵a2=a2re+a2im*i%由实矩阵构造以上两例中的复数矩阵均为1.0000 + 1.0000i 1.0000 +2.0000i 1.0000 +3.0000i1.0000 - 1.0000i 1.0000 -2.0000i 1.0000 -3.0000iB)复数的绘图(1)直⾓坐标图plot函数(2)极坐标图Polar函数调⽤格式:polar(theta,rho)其中theta为极坐标极值,rho为极坐标⽮径例:做出y=t+i*rsin(t) 的坐标图t=0:0.01:2*pi;y=t+i*t.*sin(t); %直⾓坐标表⽰r=abs(y);delta=angle(y);%极坐标表⽰subplot(2,1,1)plot(y)%绘制直⾓坐标图title('直⾓坐标图');subplot(2,1,2)polar(delta,r)%绘制极坐标图title('极坐标图')C)复数的操作函数常⽤矩阵分解函数转⾃博客:。
复倒谱的基本原理

复倒谱的基本原理倒谱(Cepstrum)是一种将频谱信息转换为时间领域的信号分析方法。
它是由美国工程师和数学家Homayoon Beigi于1963年提出的,用于声学和信号处理等领域。
倒谱分析在语音识别、音乐处理、语音合成、语音压缩等许多应用中得到了广泛应用。
倒谱的基本原理是基于信号的频谱和其对数谱之间的转换关系。
其核心思想是通过将频谱信号进行对数运算,然后再进行傅里叶反变换,将其从频率域转换为时间域。
这样,倒谱展示了信号的谐波分量和它们在时间轴上的重复周期。
倒谱的计算步骤如下:1.对原始信号进行傅里叶变换,得到频谱。
傅里叶变换可以将信号从时域转换到频域,得到信号的复数频谱表示。
2.对频谱进行对数运算,得到对数谱。
对数谱可以将原始频谱中的幅度信息转换为对数尺度,增强信号中较小能量的频谱成分。
3.对对数谱进行傅里叶反变换,得到倒谱。
傅里叶反变换将对数谱从频率域转换为时间域,得到倒谱信号。
倒谱的应用:1.语音识别:倒谱分析在语音识别中被广泛应用。
声音信号经过倒谱分析转换为时间域,然后使用模式识别算法对信号进行特征提取和匹配,从而实现语音识别。
2.音乐处理:倒谱分析在音乐处理中可以用于音乐的音高检测、音乐合成和音频特征提取等。
通过对音频信号的倒谱分析,可以提取出音乐中的谐波分量和它们的周期。
3.语音合成:倒谱分析可以提取语音信号中的谐波分量和它们的周期,用于语音合成。
谐波分量可以通过合成滤波器进行生成,从而实现语音信号的合成。
4.语音压缩:倒谱分析可以提取语音信号的谐波分量和周期信息,然后对其进行压缩。
通过压缩倒谱信息,可以实现高效的语音信号传输和存储。
总结:倒谱分析是一种将频谱信息转换为时间领域的信号分析方法。
倒谱的基本原理是通过对频谱进行对数运算和傅里叶反变换,将其从频率域转换为时间域。
倒谱分析在语音识别、音乐处理、语音合成和语音压缩等领域得到了广泛应用。
通过倒谱分析,可以提取信号中的谐波成分和它们的周期信息,从而实现信号的特征提取、合成和压缩。
用MATLAB计算复数的实部、虚部、模、辐角,共轭复数、简单复数方程根及复数的极限

z = 2.1520 + 0.9505i
二、复数的三角函数运算同实数的三角函数运算
三角函数运算函数为 sin(x),cos(x),tan(x),cot(x),sec(x),csc(x),sinh(x),cosh(x),tanh(x),coth(x),sech( x),csch(x) 反三角函数运算函数为 asin(x),acos(x),atan(x),acot(x),asec(x),acsc(x), 例 5 求复数 3+4i 的三角函数 >> z=3+4i; >> sin(z) ans = 3.8537 -27.0168i
三、用 MATLAB 计算复数方程的根及极限
例 6 求方程 z 8 0 的根. >> solve('z^3+8=0') ans = -2 1+i*3^(1/2) 1-i*3^(1/2) 例 8 对复变函数 f ( z ) z , 取 z 0 1 2i syms z z0 >> f=z^2; >> z0=1+2i z0 = 1.0000 + 2.0000i >> limit(f,z,z0) ans = -3+4*i
例 1:求复数 12 2i 的实部、虚部、模、共轭复数和辐角 >> z=-sqrt(12)-2i; >> x=real(z) x = -3.4641 >> y=imag(z) y = -2 >> abs(z) ans = 4.0000 >> conj(z) ans =
1
-3.4641 + 2.0000i >> angle(z) ans = -2.6180 例 2 imag([5-8j,3+4j]) ans = -8 4
倒谱计算与分析..

《视频语音处理技术》倒谱计算与分析学院名称:计算机与信息工程学院专业名称:计算机科学与技术年级班级:姓名:学号:计算机与信息技术学院综合性、设计性实验报告一、 实验目的:对语音信号进行同态分析可得到语音信号的倒谱参数。
语音的倒谱是将语音的短时谱取对数后再进行IDFT 得到的,所以浊音信号的激励反映在倒谱上是同样周期的冲激,借此,可从倒谱波形中估计出基音周期。
对倒谱进行低时窗选,通过语音倒谱分析的最后一级,进行DFT 后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振峰频率,对于平滑过的对数谱中的峰值进行定位,即可估计共振峰。
对于倒谱计算与分析的设计实验可作如下训练: 1、复倒谱的几种计算方法: 2、最小相位信号法和递归法; 3、基音检测; 4、共振峰检测。
二、实验仪器或设备:windowsXP 下的Matlab 编程环境 三、总体设计(设计原理、设计方案及流程等)1.复倒谱的几种计算方法:在复倒谱分析中,z 变换后得到的是复数,所以取对数时要进行复对数运算。
这时存在相位的多值性问题,称为“相位卷绕”。
设信号为则其傅里叶变换为对上式取复对数为 则其幅度和相位分别为:)()()(21n x n x n x *=)()()(21ωωωj j j e X e X e X ⋅=)(ln )(ln )(ln 21ωωωj j j e X e X e X +=)(ln )(ln )(ln 21ωωωj j j e X e X e X +=)()()(21ωϕωϕωϕ+=)()()(21ωϕωϕωϕ+=上式中,虽然 , 的范围均在 内,但 的值可能超过范围。
计算机处理时总相位值只能用其主值表示,然后把这个相位 主值“展开”,得到连续相位。
所以存在下面的情况:(K 为整数) 此时即产生了相位卷绕。
下面介绍几种避免相位卷绕求复倒谱的方法。
最小相位信号法这是解决相位卷绕的一种较好的方法。
最小相位法

实验五、复倒谱分析与最小相位法
(1)、理解求取倒谱特征参数的同态分析处理的基本原理和方法,并能用 VC 或 MATLAB
(推荐)编程实现求取复倒谱。
(2)、要求在求取复倒谱的过程中采用最小相位法避免相位卷绕。
(3)、所编程序能对一个最小相位序列进行分析,比较最后恢复出的序列与原序列的
差别,并分别显示出来。
0 g(n) 1
2
(n 0) (n 0) (n 0)
可得: x(n) g(n) xe (n) ,下图为利用最小相位信号法求复倒谱的示意图。
3、实验内容与结果
x(n)
X (e jw )
X R (e jw ) log | X (e jw ) |
复对数 (实部)
xe (n) x(n)
DFT
log(.)
(4)、通过该实验加深对复倒谱及最小相位法原理的理解。
2、实验原理
最小相位信号法是由最小相位信号序列的复倒谱序列的复倒谱性质及 Hirbert
变换的性质推倒出来的。这是一种较好的解决相位卷绕的方法,但它仅适用于最小
相位序列。
由最小相位信号序列的复倒谱性质可知,若 x(n) 是最小相位信号,则 x(n) 必然
IDFT
(虚部)
0
(n 0)
1
X L0(.e3 jw ) [ X (e jw )]
g(n) 1
(n 0)
()
0.25
2
(n 0)
0.8
0.2
0.6
0.15
0.4
利用最小相位0信.1 号法求复倒谱的框图
0.05
0.2 0
0
0
5
10
15
20
25
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复倒谱的计算 和matlab 实现
一、计算原理 在复倒谱分析中,z 变换后得到的是复数,所以取对数时要进行复对数运算。
这时存在相位的多值性问题,称为“相位卷绕” 设信号为 则其傅里叶变换为
对上式取复对数为 则其幅度和相位分别为
上式中,虽然 , 的范围均在
之内,但 的值可能超过
范围。
计算机处理时总相位值只能用其主值 表示,然后把这个相位主值“展开”,得到连续相位。
所以存在情况:
(k 为整数) 此时即产生了相位卷绕。
这会是后面求复倒谱以及由复倒谱恢复语音带来不确定性产生错误 改进方法
1、最小相位信号法 适用条件:
被处理的信号想x(n)必须是最小相位信号。
实际上许多信号就是最小相位信号,或可以看作是最小相位信号。
语音信号的模型就是
)
()()(21n x n x n x *=)
()()(21ωωωj j j e X e X e X ⋅=)
(ln )(ln )(ln 21ω
ωωj j j e X e X e X +=)
()()(21ωϕωϕωϕ+=)
(ln )(ln )(ln 21ω
ωωj j j e X e X e X +=)(ωϕ()ππ,-)(2ωϕ)(ππ,-)(ωΦ)
()()(21ωϕωϕωϕ+=πωωϕk 2)()(+Φ=)(1ωϕ
极点都在z 平面单位圆内的全极点模型,或者极零点都在z 平面单位圆内的极零点模型。
设信号x(n)的z 变换为X(z)=N (z)/ D(z) ,则有
根据z 变换的微分特性有 若x(n)是最小相位信号,则 必然是稳定的因果序列。
由Hilbert 变换的性质可知,任一因果复倒谱序列都可分解为偶对称
分量和奇对称分量之和:
其中
这两个分量的傅里叶变换分别为
的傅里叶变换的实部和虚部。
所以:
此即复倒谱的性质3,也就是说一个因果序列可由其偶对称分量来恢
复。
如果引入一个辅助因子g(n),上式可写作
其中:
原理框图:
)
()(ln )(ln )(ˆz D z N z X z X ==⎥⎦
⎤⎢⎣⎡-=-=-∞
-∞=∑)()(ln )(ˆ)(ˆz D z N dz d z z X dz d z z n x n n
n [])
()()()()()(z D z N z D z N z N z D z
'-'-=)(ˆn x
)(ˆ)(ˆ)(ˆn x n x n x o e +=[]2/)(ˆ)(ˆ)(ˆn x n x n x e -+=[]2/)(ˆ)(ˆ)(ˆn x n x n x
o --=)(ˆ)(ˆ)(ˆ)(ˆωωω
ω
j I
j R jn n j e X j e X e n x
e X
+==-∞
-∞
=∑)(ˆn x ⎪⎩⎪⎨⎧>=<=0
)(ˆ20 )(ˆ0 0)(ˆn n x n n x n n x
e e )(ˆ)()(ˆn x n g n x e ⋅=00()1
020
n g n n n <⎧⎪==⎨⎪>⎩
)
n
2.递归法
同样只能适用于 x(n)是最小相位信号的情况。
根据z 变换的微分特性得
; 对上式求逆z 变换,根据z 变换的微分特性,有 所以:
;
设x(n)是最小相位序列,而最小相位信号序列一定为因果序列 ,所
以有 ;
由于
及 ,可得递推公式 ; 递归运算后由复倒谱定义:
可知: 同理 若x(n)是最大相位序列:
其中的。
二.Matlab 实现 M 程序clear all ;
)()()(z X dz
d
z z X dz d z zX -=- [])()()(ˆn x n n x n x n ⋅=*⋅0)()(ˆ)(≠-⎪⎭
⎫ ⎝⎛=∑∞
-∞=n k n x k x n k n x k ∑∑-==+-⎪⎭
⎫ ⎝⎛=-=1
00)0()(ˆ)()(ˆ)()(ˆ)()(n k n
k x n x k n x k x n k k n x k x n k n x )
0()()(ˆ)0()()(ˆ10x k n x k x n k x n x n x n k -⎪⎭⎫ ⎝⎛-=∑-=[]{}⎭
⎬⎫
⎩⎨⎧==∑∞
-∞=---])(ln[)(ln )(ˆ1
1
n n z n x z n x z z n x )0(0)(ˆ<=k k x )(0)(ˆn k k n x >=-[][])
0(ln )()0(ln )0(ln )0(1
x n x x z z x ===-δ⎪⎩
⎪
⎨⎧<=>=0 20
10 0)(n n n n g 0
)
0()()(ˆ)()0()()(ˆ0
1<--=∑+=n x k n x k x n k x n x n x n k )0(ln )0(ˆx x =
%倒谱
[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.5]) title('截取的语音段'); xlabel('样点数'); ylabel('幅度'); subplot(2,1,2);
time2=[-199:1:-1,0:1:200]; plot(time2,sa1);
axis([-200,200,-0.5,0.5])
title('截取语音的倒谱'); xlabel('样点数'); ylabel('幅度');
采集的是普通室内的语音 hello world 采样率8KHZ 单声道 试验结果
0 50
100
150
200 250 300
350
400
-0.5 0.5 截取的语音段
样点数 幅度
-200
-150 -100 -50
0 50 100 150 200
-0.5 0.5 截取语音的倒谱
样点数
幅度
081182039 朱熹
参考书籍
1.《数字语音处理及仿真》张雪英
2.《语音信号处理》韩纪庆张磊郑铁然。