1

シミュレートしたい VHDL コードがいくつかあります。整数 FIR 係数を使用し、整数加算を実行します。私が使用する係数は、scipy.signal.firwin から再スケーリングされます。私の実際のハードウェアには、フィルターに起因するいくつかの摂動があり、Python でシミュレートしたいと考えています。

ただし、Pythonはlfilter浮動小数点演算に使用しますが、これは私が必要としているものではありません。最も近い整数を取得し、フィルターを介して信号を伝播するには、丸めを使用した整数のみの演算が必要です。

そのような機能はありますか、それとも自分でやらなければなりませんか?

ありがとう

.d.

4

1 に答える 1

0

numpy.convolveはどうですか?

フィルタを使用して前の 2 つのサンプルを追加する簡単な例を次に示します。

signal, coeffs = np.array([1,2,3,4,5]), np.array([1, 1])
output = np.convolve(signal, coeffs, mode='valid')

結果:

array([3, 5, 7, 9])

mode=validスイッチは、データが不十分な場合にサンプルの計算を回避するため、出力は入力よりも少し短いことに注意してください。エッジ効果に必要な動作を得るために、さまざまなスイッチを試すことができます。

この関数が内部的に浮動小数点を計算してから、整数に丸める可能性があります。お気づきのように、これは最終的な答えには影響しません。ただし、計算時間を節約することが目的の場合は、浮動小数点入力よりも整数入力の方が実際に高速であることを確認する必要があります。きっとそうです。

于 2012-12-17T09:26:17.337 に答える