?? fextrema.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 + -