7

デジタル信号処理用の区分関数を作成しようとしていますが、範囲を指定できるように numpy.piecewise を取得できません。

ここに私が入力したいものがあります:

t = np.arange(-10,10,1)
x = lambda x: x**3
fx = np.piecewise(t, [t < -1 and t>-2, t <= 0 and t>-1, t>=0 and t<1,t>1 and t<2], [x(t + 2), x(-t),x(t),-x(2-t)])
plot(t,fx)

ただし、「ValueError: 複数の要素を持つ配列の真の値があいまいです。a.any() または a.all() を使用してください」というエラーが表示されます。

関数を分析した後、問題は、この関数が次のような 2 つの条件を許可しないことです。 t < -1 and t>-2

しかし、範囲を指定できるようにすることは、多くの区分関数にとって不可欠であるように思えます。これを達成する方法はありますか?

ありがとう!

4

2 に答える 2

6

これは、numpy 配列では and を使用できないためです。numpy boolean 配列の場合はandwith*orwithを置き換える必要があります。+(括弧を追加することを忘れないでください)。

于 2013-09-24T09:56:07.873 に答える