matlab 极值查找程序
%n 迭代次数,data 是一维输入,peakval 是找到峰值,peakcoor 是峰值所在位
置
function [peakval,peakcoor] = peakfinder(data,n)
premaxindexbox=find(diff(sign(diff(data)))==-2)+1;
premaxvaluebox=data(premaxindexbox);%极大值
if n==1
%额外情况:为防止机制的漏点而设置
originpeakval=max(data);
originpeakcoor=find(data==originpeakval);
%合并
peakcoor=[premaxindexbox;originpeakcoor];
peakval=[premaxvaluebox;originpeakval];
%绘图
plot(data);hold on
plot(peakcoor,peakval,'ro','LineWidth',1);
hold off
else
for i=2:n
x)))==-2)+1;%在最大值中再次找最大值,得到序列号
nextmaxindex=find(diff(sign(diff(premaxvaluebo
nextmaxindexbox=premaxindexbox(nextmaxindex);%
依据序列号找到第一列对应值,即二次极值的坐标
nextmaxvaluebox=premaxvaluebox(nextmaxindex);%
依据序列号找到第二列对应值,即二次极值的值
if i
peakval=[nextmaxvaluebox;originpeakval];
%绘图
plot(data);hold on
plot(peakcoor,peakval,color,'LineWidth',size);
hold off;
end