2016-07-08 6 views
0

4Hzでサンプリングされた2Hzの方形波をプロットしようとしています(下図参照)。なぜ私はIMOで-1第二赤い矢印でマークされなければならないサンプル囲まれた赤のための均一性を得ていないのです。scipyを使用した方形波のサンプリングが正しくない

ここenter image description here

は私のPythonコードされる()NPとしてシェルと輸入numpyのを(ipythonと仮定なぜなら、通常の浮動小数点の不正確さのだscipyのダウンロード(信号)とmatplotlibの(PLT))

t4 = np.linspace(0,4,16,endpoint=False) 
s2t4 = signal.square(2.0*np.pi*2.0*t4) 
t500 = np.linspace(0,4,500,endpoint=False) 
s2t500 = signal.square(2*np.pi*2*t500) 
plt.ylim(-2,2); plt.plot(t500,s2t500,'k',t4,s2t4,'b',t4,s2t4,'bo'); plt.show() 
+1

私の推測は浮動小数点エラーです。サークルしたポイントはおそらく2.75未満ですので、値は1です。これを修正する最も簡単な方法は、コーナーではなく方形波の中間点で三角波をサンプリングすることです。 –

答えて

4

。ジャンプが行われたポイントで方形波をサンプリングしようとしています。これは浮動小数点数の不正確さに敏感です。

あなたは丸で囲んだ値がs2t4[11]で、t4[11]は2.75です。見てみましょう:

In [15]: signal.square(2.0*np.pi*2.0*t4[11]) 
Out[15]: array(1.0) 

は、引数に小さな量を追加し、あなたは-1を得る:

In [16]: signal.square(2.0*np.pi*2.0*t4[11] + 1e-14) 
Out[16]: array(-1.0) 

あなたがt4をシフトした場合ので、サンプルは離れ不連続性からしている、それが正常に動作する必要があります。

関連する問題