MATLAB中自己写的找波峰波谷的函数,很实用

在找一段信号的波峰波谷的过程中,除了可以用matlab中自带的findpeaks函数,这里给出自己写的找波峰的函数

function [k,v]=findpeaks(x,m,w)

输入:

1 只有一个输入x,表示要找到峰值的信号;

2 m,表示模式,有2种模式,

 'q'表示二次插值
  'v'表示找到波谷而不是波峰

3 w,表示宽度公差

输出:

k,依次存放峰值的横坐标,当有多个峰值时,是个向量;

v,依次存放峰值的纵坐标。


function [k,v]=findpeaks(x,m,w)
%FINDPEAKS finds peaks with optional quadratic interpolation [K,V]=(X,M,W)
%
%  Inputs:  X        is the input signal (does not work with UInt datatype)
%           M        is mode:
%                       'q' performs quadratic interpolation
%                       'v' finds valleys instead of peaks
%           W        is the width tolerance; a peak will be eliminated if there is
%                    a higher peak within +-W samples
%
% Outputs:  K        are the peak locations in X (fractional if M='q')
%           V        are the peak amplitudes: if M='q' the a

你可能感兴趣的:(MATLAB)