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

📄 skelmap.m

📁 在matlab的小波分析中标,设计一个包含若干不连续点的一维信号
💻 M
字号:
function [skellist,skelptr,skellen] = SkelMap(maxmap)    
    % 连接模极大曲线
    maxDis = 10;
    [scale,n] = size(maxmap);
    % 从最细尺度开始连接
	rootPos = find(maxmap(1,:));
    nchain = length(rootPos);

    for i = 1:nchain        
        if(i==1)
            skelptr(i) = 1; 
        else
            skelptr(i) = skelptr(i-1)+skellen(i-1);
        end
        curScale = 1;
        curPos = rootPos(i);
        skellen(i) = 1;
        % 记录曲线的第一个点
        skellist(1:2,skelptr(i)) = [curScale;curPos];
        % 根据第一个点记录曲线的符号,小波变换值为局部极大为1,为局部极小则为-1
        sign = maxmap(curScale,curPos);
        maxmap(curScale,curPos) = 0;
                
        % 依次查找其他点
        while(curScale < scale)
            curScale = curScale+1;
            j = find(maxmap(curScale,:)); 
			circdist   = min([ abs(j-curPos) ; abs(j-curPos+n); abs(j-curPos-n) ]);
			[dist,pos] = min(circdist);
            if ~isempty(pos)                 
				if(sign==maxmap(curScale,j(pos(1))) & abs(curPos-j(pos(1)))<maxDis )
                    % 与曲线符号相同,且与前一尺度模极大点在最大限制距离内
                    curPos = j(pos(1));                 
                    skellist(1:2,skelptr(i)+curScale-1) = [curScale;curPos];
                    maxmap(curScale,curPos) = 0;
				    skellen(i) = skellen(i)+1;
                else
                    curScale = scale;
                end
            else
                curScale = scale;
            end
        end        
    end

⌨️ 快捷键说明

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