fextrema.m

来自「一种新的时频分析方法的matlab源程序。」· M 代码 · 共 69 行

M
69
字号
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

⌨️ 快捷键说明

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