user3628070
user3628070

Reputation:

How do I find exact rest points?

I have a displacement and a time data of a movement of an object.

The object oscillates around zero. That is, first - it gets set into motion by a small amount of force, then it comes to rest. again, a little force is applied and object gets set into motion.

I have found out the velocity and acceleration using

V= [0 ; diff(disp) ./ diff(times)];
A= [0; diff(V) ./ diff(times)];

I was thinking of finding points where velocity is zero. But i guess there are more than required such instances. Find the graph below:

velocity plot

enter image description here

I am interested in only circles time values. Is there a way to get these?

I observe a pattern

  1. velocity increases then decreases by almost same amount.
  2. Then due to friction, it crosses zero by a smaller amount and again becomes negative
  3. finally comes to rest, but a very little velocity is still present.
  4. It is this touch point to zero that I want. Then again force is applied and the same cycle repeats.

Pl note that I do not have a time of when force is applied. Otherwise there was nothing to be done.

Also, I did plot the acceleration. But is seems so useless..

I am using matlab.

Upvotes: 0

Views: 79

Answers (2)

quanke0801
quanke0801

Reputation: 41

The resting points you asked have the following property:

dx / dt = v = 0

d^2 x / dt^2 = a = 0 # at the instance that the object becomes v = 0, there is no force on it.

So you may want to check also the second formula to filter the resting points.

Upvotes: 0

Rody Oldenhuis
Rody Oldenhuis

Reputation: 38032

Here's one way to find approximate zeros in gridded data:

% some dummy synthetic data
x  = linspace(0, 10, 1e3);
y  = exp(-0.3*x) .* sin(x) .* cos(pi*x);

% its derivative (presumably your "acceleration")
yp = diff(y) ./ diff(x);

% Plot data to get an overview 
plot(x,y), hold on


% Find zero crossings (product of two consecutive data points is negative)
zero_x = y(1:end-1) .* y(2:end) < 0;

% Use derivative for linear interpolation between those points
x_cross = x(zero_x) + y(zero_x)./yp(zero_x);

% Plot those zeros
plot(x_cross, zeros(size(x_cross)), 'ro')

Result:

graph of dummy function and its zeros

It is then up to you to select which zeros you need, because I could not understand from the question what made those points in the circles so special...

Upvotes: 3

Related Questions