こんにちは、私は持っているデータの3D配列(xyz座標の磁場データ)にSav-gol filterを適用しようとしています。私はエラーを取得します:TypeError:期待されるxとyは同じ長さです。私の配列は460798ユニットで、各ユニットは座標[x y z]のリストです。私はそれがウィンドウサイズのパラメータで何かをしなければならないと思う。私は3つにそれを置く、それは正常に動作しますが、私のデータポイントは平滑化されていません。 3つより高い場合、動作しません。
私は3次元配列を平滑化する関数を取得しようとしています。SavGolフィルタは3次元配列で同じ長さのエラーを返します
mag = cdf['Mag'][start_ind:stop_ind) #mag is a 3-D array with coordinate element [x y z]
mag_smoothed = signal.savgol_filter(x=mag, window_length=5, polyorder=2)
print mag_smoothed[1]
私は戻って平滑化3-Dの配列を取得することになってる、私は信じています。
File "/Users/sosa/research/Python Files/MagnometerPlot.py", line 33, in plot
mag_smoothed = signal.savgol_filter(x=mag, window_length=7, polyorder=2,axis=1)
File "/Users/sosa/anaconda/lib/python2.7/site-packages/scipy/signal/_savitzky_golay.py", line 339, in savgol_filter
_fit_edges_polyfit(x, window_length, polyorder, deriv, delta, axis, y)
File "/Users/sosa/anaconda/lib/python2.7/site-packages/scipy/signal/_savitzky_golay.py", line 217, in _fit_edges_polyfit
polyorder, deriv, delta, y)
File "/Users/sosa/anaconda/lib/python2.7/site-packages/scipy/signal/_savitzky_golay.py", line 187, in _fit_edge
xx_edge, polyorder)
File "/Users/sosa/anaconda/lib/python2.7/site-packages/numpy/lib/polynomial.py", line 559, in polyfit
raise TypeError("expected x and y to have same length")
TypeError: expected x and y to have same length
文書によれば、サイフィー・ザ・キツツキゴーレイ・フィルタは1Dフィルタである。軸を指定することもできます( 'axis = 0/1/2')。しかし、このフィルターを使用すると、一度に1軸の信号だけをフィルタリングすることができ、それがあなたの目的にふさわしいかどうかを考える必要があります。 – ikom
@ikom、magリストのx、y、z成分を分離して各成分に別々にフィルタを適用すると、フィルタは複製されますか? – Sosa