2016-06-09 19 views
1

我正在嘗試使用np.gradient來計算一個衍生物,但是我得到了奇怪的結果,並且想要檢查我是否正確使用它來消除這個可能的錯誤。np.gradient - 正確使用?

A在一系列等距(但不是統一)x值數據點上具有函數y(x)。 我計算的衍生物

deriv = np.gradient(y, dx) 

這是正確的應用程序?一些非常狂野的價值觀蔓延到我的結果中,只有在我正在開發的模型中迭代該函數時纔會惡化。

+0

可以提供片樣品d的ATA?和你得到的有線結果?一般基於你所描述的,你正確地使用它。 – MaThMaX

+0

數據是一個1D陣列,其中2E5個數值的電流以相等間隔距離採樣(我的x陣列)。奇怪的值是結果中的偶然大的尖峯(無賴點),在我的模型的連續迭代中增加了數量和幅度。 –

+0

如果你想聚集你當前的信號,那麼你應該不應該使用這種簡單的算法來進行聚類。或者,也許你可以在運行'梯度'函數之前平滑你的信號? – MaThMaX

回答

0

看起來很對我。罪的導數是cos。當我繪製出我的sin函數的np.gradient時,它與直接繪製cos時的外觀相同。

一個例子:

import numpy as np 
import pandas as pd 

x = np.arange(-2 * np.pi, 2 * np.pi, 0.01) 
y = np.sin(x) 
pd.Series(y).plot() 

enter image description here

y2 = np.gradient(y, 0.01) 
pd.Series(y2).plot() 

enter image description here

y3 = np.cos(x) 
pd.Series(y3).plot() 

enter image description here