matlab 倒谱ceptrum,倒谱法求共振峰

freq=(0:wlen2-1)*fs/wlen;                        % 计算频域的频率刻度

u2=u.*hamming(wlen);                                     % 信号加窗函数

U=fft(u2);                                       % 按式(9-2-1)计算

U_abs=log(abs(U(1:wlen2)));                      % 按式(9-2-2)计算

Cepst=ifft(U_abs);                               % 按式(9-2-3)计算

cepst=zeros(1,wlen2);

cepst(1:cepstL)=Cepst(1:cepstL);                 % 按式(9-2-5)计算

cepst(end-cepstL+2:end)=Cepst(end-cepstL+2:end);

spect=real(fft(cepst));                          % 按式(9-2-6)计算

[Loc,Val]=findpeaks(spect);                      % 寻找峰值

FRMNT=freq(Loc);                                 % 计算出共振峰频率

% 作图

pos = get(gcf,‘Position’);

set(gcf,‘Position’,[pos(1), pos(2)-100,pos(3),(pos(4)-140)]);

plot(freq,U_abs,‘k’);

hold on;  grid;

plot(freq,spect,‘k’,‘linewidth’,2);

xlabel(‘频率/Hz’); ylabel(‘幅值/dB’);

title(‘信号频谱,包络线和共振峰值’)

fprintf(‘%5.2f   %5.2f   %5.2f   %5.2f\n’,FRMNT);

for k=1 : 5

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
倒谱共振估算是一种音频信号处理方法,可以用于分析和估算信号中的频谱特征。下面是一个简单的Matlab程序,可用于实现倒谱共振估算: 1. 首先,需要读取输入的音频文件数据。可以使用Matlab中的wavread函数读取WAV格式的音频文件数据: [y,fs]=wavread('input.wav'); 其中,y表示输入音频文件的采样数据,fs是采样率。 2. 将音频数据通过离散傅里叶变换(DFT)转换为频域数据。可以使用Matlab中的fft函数实现此操作: Y=fft(y); 3. 计算信号的倒谱倒谱是由DFT数据的真实部分计算得出的: cepstrum=ifft(log(abs(Y))); 4. 找到倒谱中的共振。需要对倒谱进行值检测,并找到最高的几个值。这些值对应着信号频谱的共振。可以使用Matlab中的findpeaks函数实现此操作: [pks,locs]=findpeaks(cepstrum); 其中,pks表示值,locs表示其相应的位置。 5. 找到共振在频域中的位置。根据共振倒谱上的位置,可以通过计算其在频域中的位置来确定其频率。可以使用Matlab中的fft函数实现此操作: for i=1:length(locs) freq(i)=(locs(i)-1)/length(cepstrum)*fs; end 其中,freq表示共振的频率。 6. 输出共振的频率。最后,可以将共振的频率输出到屏幕上: disp(freq); 以上就是一个简单的Matlab程序,可以用于实现倒谱共振估算。通过这种方法,可以准确地找到信号中的共振,并估算它们的频率。这对于音频信号的分析和处理非常有用,可以应用于音乐制作、语音识别等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值