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

📄 znormalize.m

📁 这是一个关于hht变换很有用的工具箱
💻 M
字号:
function [data,a]=znormalize(data)

[nPoints, nIMF] = size(data);

flipped=0;
if nPoints < nIMF
    %flip data set
    data = data';
    [nPoints, nIMF] = size(data);
    flipped=1;
end

% preallocate arrays
a = zeros(nPoints,nIMF);

for c=1:nIMF
    % find all critical points
    [allX, allY] = find_critical_points(data(:,c));
    nCrit = length(allX);
    
    if nCrit <= 1
        % too few critical points; keep looping
        continue;
    end
    
    % previous calculated amplitudes
    a2prev1 = NaN;
    a4prev1 = NaN;
    a4prev2 = NaN;
    a4prev3 = NaN;
    
    for i=1:nCrit-1
        cx = allX(i);
        a1 = 4*max(abs(allY(i:i+1)));
        npt = 4;
        atotal = a1;
        
        if i+2<=nCrit
            range = allY(i:i+2);
            ext = range(range~=0);
            a2cur = 2*mean(abs(ext));
            npt = npt+2;
            atotal = atotal+a2cur;
        else
           af2cur=NaN;
        end
        
        if i+4<=nCrit
            range = allY(i:i+4);
            ext = range(range~=0);
            a4cur = mean(abs(ext));
            npt = npt+1;
            atotal=atotal+a4cur;
        else
            a4cur=NaN;
        end
        
        % if previous points are valid, add them in also
        if ~isnan(a2prev1)
            npt=npt+2;
            atotal=atotal+a2prev1;
        end
        if ~isnan(a4prev1)
            npt=npt+1;
            atotal=atotal+a4prev1;
        end
        if ~isnan(a4prev2)
            npt=npt+1;
            atotal=atotal+a4prev2;
        end
        if ~isnan(a4prev3)
            npt=npt+1;
            atotal=atotal+a4prev3;
        end
        
        a(ceil(allX(i)):floor(allX(i+1)),c) = atotal/npt;
        
        a2prev1=a2cur;
        a4prev3=a4prev2;
        a4prev2=a4prev1;
        a4prev1=a4cur;
    end
    
    % fill in ends
    a(1:ceil(allX(1))-1,c) = a(ceil(allX(1)),c);
    a(floor(allX(nCrit))+1:nPoints,c) = a(floor(allX(nCrit)),c);
end

if (flipped)
    a=a';
end

⌨️ 快捷键说明

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