信号内のゼロ交差の数を計算するアルゴリズムを作成しました。これは、値が + から - に、またはその逆に変化する回数を意味します。
アルゴリズムは次のように説明されています。
以下の要素がある場合:
v1 = {90, -4, -3, 1, 3}
次に、その値にその隣の値を掛けます。(i * i+1)
次に、符号値 sign(val) を取得して、これが正か負かを判断します。例:
e1 = {90 * -4} = -360 -> sigum(e1) = -1
e2 = {-4 * -3} = 12 -> signum(e2) = 1
e3 = {-3 * 1} = -3 -> signum(e3) = -1
e4 = {1 * 3} = 3 -> signum(e4) = 1
したがって、負から正に変化した値の総数は = 2 ..
ここで、この一般的なアルゴリズムを方程式に入れて、提示できるようにしたいと思います。
私は似たような質問をしましたが、本当に混乱したので、立ち去って考え、思いつきました (方程式はどのように見えるべきだと思いますか).. それはおそらく間違っています、まあ、笑えるほど間違っています. しかし、ここにあります:
その背後にあるロジックは次のとおりです。
V (val) を渡します
(Vi * Vi+1) の計算から符号の合計の絶対値を取得します。符号 (Vi * Vi+1) は -1、1、...、値を生成する必要があります。
値が -1 の場合のみ (ゼロを超える回数だけに関心があるため、ゼロ値.
これは正しいように見えますか?そうでない場合、誰かが改善を提案できますか?
ありがとうございました :)!
編集:
これは今正しいですか?