中心差分の効率良い書き方 in pandas/matlab/numpy
pandas版
pandasには差分を出す関数diffが用意されているが,物理量の離散的な微分値を考えた場合これは全く推奨できない。
多少マシな中心差分はshiftをうまく使えば以下のようにスマートに書ける。
cdiff=(data.shift(-1)-data.shift(1))/2/dt
Sampling時間の考慮,NaNの処理も含めて関数化した結果が以下のようになる。
def centerdiff(data,dt=1):
cdiff=(data.shift(-1)-data.shift(1))/2/dt
return cdiff.fillna(method='ffill').fillna(method='bfill')
matlab版(numpyでも可)
この場合スライシングを使って計算するのが良いと思われる。
function cdiff = centerdiff(data,dt)
cdiff_ = (data(3:end)-data(1:end-2)) /2/dt;
cdiff = [cdiff_(1) ,cdiff_, cdiff_(end)];
end
より高次の処理にも応用可能なのでひとまず覚えておいて損はないはず。
Author And Source
この問題について(中心差分の効率良い書き方 in pandas/matlab/numpy), 我々は、より多くの情報をここで見つけました https://qiita.com/ossyaritoori/items/fbf54c5d658612f6cc7b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .