私はこの質問をする最善の方法ではないので、事前にお詫び申し上げます。Numpy Masking with Array
私は、NxM個のオーディオ信号の配列の各行にピークを見つけることを試みています。配列の各行は個別に扱われ、周波数空間の配列の各Nに対して、すべての値にノイズフロアを超える標準偏差の特定の数を取得したいと思います。この実験では、400Hz以上の信号がないので、ノイズフロアとして使用しています。私はマスクするときに問題にぶつかっています。 ma.masked_lessは、単一の値で動作し、になりませんので、私はこれがあると推定しました
ValueError: operands could not be broadcast together with shapes (91,5001) (91,)
:この例では、誤差が発生します
from scipy import signal
import numpy as np
Pxx_den = signal.periodogram(input, fs=sampleRate ,nfft=sampleRate,axis=1)
p = np.array(Pxx_den)[1].astype(np.float)
noiseFloor = np.mean(p[:,400:],axis=1)
stdFloor = np.std(p[:,400:],axis=1)
p = np.ma.masked_less(p,noiseFloor+stdFloor*2)
:ここに私のコードスニペットですアレイ。私は出力が条件よりも大きな値のNxM配列であることを望みます。私が好きなことや効率的なやり方をするナンシーな方法がありますか?
私はpeakUtilsやscipy.signal.find_peaks_cwt()などのいくつかのピーク検出ルーチンも見てきましたが、それらは1D配列に対してのみ動作するようです。マスクされた配列を使用したにすぎ入る前に事前
これはトリックを行ったようです。ありがとう! – nanoPhD