2017-01-03 42 views
1

我有一個位移和一個對象的運動的時間數據。我如何找到準確的休息點?

物體在零附近擺動。也就是說,首先 - 通過少量的力量開始運動,然後休息。再次,施加一點力量,物體開始運動。

我發現使用

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

我想尋找點,其中速度爲零的速度和加速度。但我想有更多需要這種情況。查找圖下方:

速度情節

enter image description here

我感興趣的只有盤旋的時間值。有沒有辦法得到這些?

我觀察到圖案

  1. 速度增加然後通過幾乎相同的量減少。
  2. 然後,由於摩擦,它通過一個較小的量零,並再次變爲負
  3. 最終停止,但仍然存在很小的速度。
  4. 這是我想要的零點。然後再次施加力並重復相同的循環。

注意,我沒有時間施加力。否則就沒有什麼可做的了。

此外,我確實繪製了加速度。但似乎是如此無用..

我正在使用matlab。

+1

似乎不僅僅是速度經過零點的圓圈。與其他人選擇這些要點的標準是什麼? – BillBokeey

+0

考慮噪聲信號的導數會增加噪聲。二次衍生品等更是如此您可以嘗試使用[Savitzky-Golay](http://stackoverflow.com/a/23964378/2278029)或[其他方法](http://www.holoborodko.com/pavel/numerical-methods/)數值-衍生物/光滑低噪聲微分/)。 – horchler

回答

3

這裏找到網格數據近似零一種方法:

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

結果:

graph of dummy function and its zeros

然後由你來選擇你需要其中零,因爲我從這個問題無法理解是什麼使這些圈子中的這些特點如此特別...

0

個你問的靜止點具有以下屬性:

DX/DT = V = 0

d^2×/ DT^2 =α= 0#在該對象變爲V = 0的情況下,它沒有力量。

因此,您可能還想檢查第二個公式以過濾休息點。