📄 pkpicker.m
字号:
function [peaks, locs] = pkpicker( x, thresh, number, sortem )%PKPICKER pick out the peaks in a vector%--------% Usage: [peaks,locs] = pkpicker( x, thresh, number, sortem )%% peaks : peak values% locs : location of peaks (index within a column)% x : input data (if complex, operate on mag)% thresh : reject peaks below this level% number : max number of peaks to return% sortem : 'sort' will return list sorted by peak height,% instead of by index # (the default)%---------------------------------------------------------------% copyright 1994, by C.S. Burrus, J.H. McClellan, A.V. Oppenheim,% T.W. Parks, R.W. Schafer, & H.W. Schussler. For use with the book% "Computer-Based Exercises for Signal Processing Using MATLAB"% (Prentice-Hall, 1994).%---------------------------------------------------------------if nargin == 1 thresh = -inf; number = -1; sortem = 0;elseif nargin == 2 number = -1; sortem = 0;elseif nargin == 3 sortem = 0;endif strcmp(sortem,'sort') sortem = 1;end[M,N] = size(x);if M==1 x = x(:); %-- make it a single column [M,N] = size(x);endif any(imag(x(:))~=0) x = abs(x); %---- complex data, so work with magnitudeendfor kk = 1:N mask = diff( sign( diff( [x(1,N)-1; x(:,N); x(M,N)-1] ) ) ); jkl = find( mask < 0 & x >= thresh); if (number>0 & length(jkl)>number) [tt,ii] = sort(-x(jkl)); jkl = jkl(ii(1:number)); if ~sortem, jkl = sort(jkl); end %-- sort by index end if sortem [tt,ii] = sort(-x(jkl)); jkl = jkl(ii); end L = length(jkl); peaks(1:L,kk) = x(jkl); locs(1:L,kk) = jkl;end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -