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

📄 fextrema.asv

📁 一种新的时频分析方法的matlab源程序。
💻 ASV
字号:
function [all_x, all_y] = fextrema(data_x, data_y)
 
% The function FEXTREMA returns all local extrema and their coordinates in the order found.
% 
% Calling sequence-
% [all_x, all_y] = fextrema(data_x, data_y)
%
% Input-
%	data_x	- input vector of coordinates
%	data_y	- input vector of values
% Output-
%	all_x	- vector that specifies the coordinates of max and min
%		    values in the order found
%	all_y	- corresponding max and min values
 
% Karin Blank (NASA GSFC)	September 29, 2003  Initial

%----- Initialize values
all_x = [];
all_y = [];
Ymax = 0;
Ymin = 0;
Xmax = 0;
Xmin = 0;
flagmax = 0;
flagmin = 0;

for i=2:length(data_y)-1;
    %----- Find local maximum
    if ((data_y(i) > data_y(i-1)) & (flagmax == 0))
        flagmax = 1;
        
        Xmax = i;
        Ymax = data_y(i);
    end
    
    if((data_y(i) < data_y(i+1)) & (flagmax == 1))
        flagmax = 0;
    end
    
    if((data_y(i) > data_y(i+1)) & (flagmax == 1))
        flagmax = 0;
         
        all_y = [all_y, Ymax];
        
        all_x = [all_x, Xmax];
    end
    
    %----- Find local minimum
    if((data_y(i) < data_y(i-1)) & (flagmin == 0))
        flagmin = 1;
        Xmin = i;
        Ymin = data_y(i);
    end
    
    if((data_y(i) > data_y(i+1)) & (flagmin == 1))
        flagmin = 0;
    end
    
    if((data_y(i) < data_y(i+1)) & (flagmin == 1))
        flagmin = 0;
       
        all_x = [all_x, Xmin];
        all_y = [all_y, Ymin];
    end
    
end

if (data_y(all_x(1))>data_y(all_x(2)) & data_y(1)<=0.8*all_y(2)) | (data_y(all_x(1))<data_y(all_x(2)) & data_y(1)>=0.8*all_y(2))
    all_x=[1 all_x];
    all_y=[data_y(1) all_y];   
end
if (data_y(all_x(end))>data_y(all_x(end-1)) & data_y(end)<=0.8*all_y(end) | data_y(end)>=0.8*all_y(end)
    all_x=[all_x length(data_y)];
    all_y=[all_y data_y(end)];
end

⌨️ 快捷键说明

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