Tengo un desplazamiento y un dato de tiempo de un movimiento de un objeto.

El objeto oscila alrededor de cero. Es decir, primero, se pone en movimiento mediante una pequeña cantidad de fuerza, luego se detiene. de nuevo, se aplica un poco de fuerza y ​​el objeto se pone en movimiento.

He descubierto la velocidad y la aceleración usando

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

Estaba pensando en encontrar puntos donde la velocidad sea cero. Pero supongo que hay más casos de los necesarios. Encuentre el gráfico a continuación:

Gráfico de velocidad

enter image description here

Solo me interesan los valores de tiempo de los círculos. ¿Hay alguna forma de conseguirlos?

Observo un patrón

  1. la velocidad aumenta y luego disminuye casi en la misma cantidad.
  2. Luego, debido a la fricción, cruza cero en una cantidad menor y nuevamente se vuelve negativo
  3. finalmente se detiene, pero todavía hay muy poca velocidad.
  4. Es este punto de contacto a cero lo que quiero. Luego se aplica nuevamente la fuerza y ​​se repite el mismo ciclo.

Por favor, tenga en cuenta que no tengo un momento en el que se aplica la fuerza. De lo contrario, no había nada que hacer.

Además, tracé la aceleración. Pero parece tan inútil ...

Estoy usando matlab.

1
user3628070 3 ene. 2017 a las 06:43
1
Parece haber algo más que los puntos que rodeas en los que la velocidad pasa por cero. ¿Cuál es su criterio para elegir estos puntos sobre los demás?
 – 
BillBokeey
3 ene. 2017 a las 11:22
Tomar la derivada de señales ruidosas aumentará el ruido. Más aún para las segundas derivadas, etc. Puede intentar usar un filtro de diferenciación como Savitzky-Golay o otros métodos.
 – 
horchler
3 ene. 2017 a las 17:51

2 respuestas

Aquí hay una forma de encontrar ceros aproximados en datos cuadriculados:

% 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')

Resultado:

graph of dummy function and its zeros

Entonces depende de usted seleccionar qué ceros necesita, porque no pude entender a partir de la pregunta qué hizo que esos puntos en los círculos fueran tan especiales ...

3
Rody Oldenhuis 3 ene. 2017 a las 12:08

Los puntos de reposo que solicitó tienen la siguiente propiedad:

Dx / dt = v = 0

D ^ 2 x / dt ^ 2 = a = 0 # en el caso de que el objeto se convierta en v = 0, no hay fuerza sobre él.

Por lo tanto, es posible que desee verificar también la segunda fórmula para filtrar los puntos de reposo.

0
quanke0801 15 ene. 2017 a las 21:26