matlab 基音周期估计后处理

Posted 胡刚2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 基音周期估计后处理相关的知识,希望对你有一定的参考价值。

fid=fopen('zhouqi.txt', 'rt');
zhouqi=fscanf(fid, '%f');
fclose(fid);

zhouqi0=medfilt1(zhouqi, 5);
zhouqi1=medfilt1(zhouqi0, 3);
zhouqi2=linsmooth(zhouqi0, 5);

w=[];
w=zhouqi;
w1=w-zhouqi2;
w1=linsmooth(w1, 5);
zhouqi3=w1+zhouqi2;

v=[];
v(1)=0;v(2)=0;v(3)=0;v(4)=0;
for i=1:(length(zhouqi) - 4)
    v(i+4)=zhouqi(i);
end
%v(:,1)为取v矩阵中第一列元素
%v(1,:)为取v矩阵中第一行元素
%v(:)矩阵v转换为一个行向量,就是一行
%例如:
%>> A = rand(2,3)
%
%A = 
%0.6925    0.3965    0.7802
%0.5567    0.0616    0.3376
%>> B = A(:)
%B =
%0.6925
%0.5567
%0.3965
%0.0616
%0.7802

v=v(:);
v1=v-zhouqi2;
v1=medfilt1(v1, 5);
v1=linsmooth(v1, 5);
zhouqi4=v1+zhouqi2;

figure(1);
subplot(511);
plot(zhouqi);
xlabel('帧数');
ylabel('样点数');
title('原始基音周期轨迹')

subplot(512);
plot(zhouqi1);
xlabel('帧数');
ylabel('样点数');
axis([0, 360, 0, 150]);
title('五点中值平滑和三点中值平滑组合')

subplot(513);
plot(zhouqi2);
xlabel('帧数');
ylabel('样点数');
axis([0, 360, 0, 150]);
title('五点中值平滑和五点线性平滑组合')

subplot(514);
plot(zhouqi3);
xlabel('帧数');
ylabel('样点数');
axis([0, 360, 0, 150]);
title('二次平滑算法')

subplot(515),plot(zhouqi4);
xlabel('帧数')
ylabel('样点数')
axis([0,360,0,150])
title('加延时的二次平滑算法')

function [y]=linsmooth(x, n)
    %disp(size(x));% x 是360行,1列的矩阵
    win=hann(n);
    win=win/sum(win); % 归一化
    %disp(size(win));
    disp(win);
    [r,c]=size(x);%size(x)返回 [行数,列数]
    if min(r,c)~=1 % ~=代表不等于
       error('sorry, no matrix here!:')
    end

    if r==1 % 行向量
        len=c;
    else    % 列向量
       len=r;
       x=x.';% 将列向量转置为行向量
    end
    %disp(len);
    %走到这里 x 一定是行向量
    y=zeros(len,1);
    if mod(n,2)==0 %返回用 m 除以 2 后的余数
       m=n/2;
       x = [ones(1,m)*x(1) x ones(1,m)*x(len)]';
    else
       m=(n-1)/2; %这里实验的n=5, m=2
       x = [ones(1,m)*x(1) x ones(1,m+1)*x(len)]';%生成新的数组,在数组 x 前面加2个元素,在数组 x 后面加3个元素
    end

    for k=1:len
        y(k) = win'*x(k:k+n-1); % 一行五列 * 五行一列
    end
end

以上是关于matlab 基音周期估计后处理的主要内容,如果未能解决你的问题,请参考以下文章

语音分析基于matlab短时自相关基音周期检测+LPC预测增益计算含Matlab源码 1517期

语音去噪基音matlab GUI音频信号去噪含Matlab源码 1386期

MATLAB点云处理(二十四):点云中值滤波(pcmedian)

MATLAB点云处理(二十四):点云中值滤波(pcmedian)

基音频率基音matlab基音频率计算含Matlab源码 1384期

怎样用matlab进行图像滤波处理