⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 centrklipf0.m

📁 Matlab simulinkMatlab center clipping
💻 M
字号:
function [F0] = centrklipf0(x,fvz,win,overlen)


Y = segmentace(x,win,overlen);

[M N] = size(Y);
% M pocet vzorku v jednom segmentu
% N pocet segmentu

k = 0.8;
Lmin = fix(fvz/400);    %min vzorek periody
Lmax = fix(fvz/80);     %max vzorek zakl periody


for i = 1:N %pro vsechny segmenty 
    segment = Y(:,i);
    
    if(i-1==0)
        maximum1 = max(abs(Y(:,i+1)));  %maximum prvniho segmentu
        maximum2 = max(abs(Y(:,i)));
    
    elseif(i+1>N)
        maximum1 = max(abs(Y(:,i-1)));      %maximum posledniho segmentu
        maximum2 = max(abs(Y(:,i)));
    
    else
        maximum1 = max(abs(Y(:,i+1)));  %maximum ostatnich segmentu
        maximum2 = max(abs(Y(:,i-1)));
    end

    minimum = min(maximum1,maximum2);   
    P = k*minimum;                  %vzpocet prahu

    norm = find(segment>P); %normovani vyssi nez P
    segment(norm) = 1;
    
    norm = find(segment<(-1)*P);    %normovani nizsi nez -P
    segment(norm) = -1;
    
    norm = find(abs(segment)<P);   %normovani od -P do P
    segment(norm) = 0;
    
   
   
    
    segment = xcorr(segment);       %korelace
    seg(:,i) = segment;

    segment = segment(M+Lmin:M+Lmax);   %interval pro zakladni ton
    Rk = find(segment==max(segment))+Lmin;  %nalezeni maxima
    F0(i) = (fvz/Rk(1));    % zakladni ton
    
    
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -