Matlab: Count values if signal changed for 0.1 in the last 2 seconds -
i have continuous signal rising , falling. found peaks- maxima values , locations.
i wondering how write code count in case signal changed in kind of rule: amplitude exceeded 0.1 , peak occurred less 2 seconds after beginning of increase.
thanks lot.
a general answer be: loop through peak vector , check appropriate part of value vector smallest element:
for = 1:len(peaks)     peak = peaks(i,:)     peak_value = peak[1]     peak_time = peak[2]     cut_values = values(max(1,(peak_time-2)*f):peak_time*f)     if min(cut_values) < peak_value - 0.1             peak_count += 1 % or edit - adding explanation:
peaks matrix (nx2) of peak values , times
values signal vector
f sampling frequency (hz), considered uniform
edited again accomodate peaks before 2s.
matlab's 1-indexing bit tricky here: sample 1 @ time 0, sample 2 @ time f. correct thing signal starts @ 0 time is:
    cut_values = values(max(0,(peak_time-2)*f)+1:peak_time*f+1) 
Comments
Post a Comment