То, что вы хотите сделать, это найти пики с высокой контрастностью.Таким образом, вам нужен способ определения локальных максимумов, а также способ измерения разницы между пиком и окружающими значениями.Пороговое значение этой разницы идентифицирует импульсные пики для вас.
Предполагается, что ваш входной сигнал называется signal
%# dilate to find, for every pixel, the maximum of its neighbors
dilationMask = ones(3);
dilationMask(5) = 0;
dilSignal = imdilate(signal, dilationMask);
%# find all peaks
%# peaks = signal > dilSignal;
%# find large peaks peaks by thresholding, i.e. you accept a peak only
%# if it's more than 'threshold' higher than its neighbors
peaks = (signal - dilSignal) > threshold;
peaks
- это логический массив с единицами, где есть хорошийпик.Вы можете использовать его для считывания высоты пика из сигнала с помощью signal(peaks)
и для поиска координат с помощью find(peaks)
.