This posting describes two methods of edge detection for wave analysis in a water pipe. I am not sure about advantaged and disadvantages. Therefore I want to evaluate the best method for this application. So please suggest new ones or judge the suggested.
Situation: There is a constant water flow through a pipe (horizontal - with constant diameter). Suddenly the pump stops and the resulting pressure drop travels along the pipe. There are several measurement points, which take a sample triggered by the sufficient value-change. Therefore the datapoints are not equally distributed in time.
Aim: I want to calculate the sound speed in the fluid from the velocity of this pressure wave. For this I need a method to detect the edges.
Approach 1: My first approach was to take the middle of this step which has a differential quotient above a certain treshold:
if ( sign(treshold)*(y(count+1) - y(count))/(t(count+1) - t(count)) > sign(treshold)*treshold) then tCutOff(j) = 0.5*(tCut1(count+1) + tCut1(count));
Approach 2: During some experiments, an advanced method came to my mind. It was motivated by the variation of the steepness in the first step of the edge. I alternatively tool the last few points before the detected step and some followers.
precursor = [ t(count-5: count-1) ; y(count-5: count-1)] follower = [ t(count+1 : count+2); y(count+1: count+2)]
Then I build the regression with the line parameters a and b each. The cutoff point is defined as the crossing of both regression lines:
tCutOff(j) = -(follow_b - pre_b)/(follow_a - pre_a);