DIAdemのエンベロープカーブの計算はどのようにして行われますか?

更新しました Mar 10, 2022

使用製品

ソフトウェア

  • DIAdem

問題

プログラミング言語によってエンベロープカーブの計算を行ったときに得られる結果が異なります。DIAdemではどのような方法でエンベロープカーブを計算していますか?

解決策

DIAdemにおけるエンベロープカーブの計算はこちらの資料で説明されている論理に基づいて行われます。具体的には、X軸においてインターバルサイズを%で指定し、その領域内で極値を検索します。

例えば、下記のような複数のピークが存在するグラフ(data)を想定します。これらのピークの間隔は0.5秒、1秒、1.5秒のいずれかです。このグラフのX軸は0秒から10秒間まで(0-10)もしくは0秒から10.1秒(0-10.1)の2つの時間軸が存在し、それぞれ101点もしくは102点のデータを持ちます。
 
data.png

上記のデータに対してエンベロープカーブの計算を行います。
時間軸が0秒から10秒間まで(0-10)の物の場合、X範囲に対してのインターバルサイズを5 %とすると、(10 - 0) * 0.05 = 0.5秒の範囲内のデータの中から極値を探します。例えば1.5秒付近のピークから次のピークを探しに行く場合、x < 1.5+0.5の範囲までのピークを探すため、2秒の部分に存在するピークを捕まえることができず、包絡線は2秒の手前において0となります(左図)。一方、X範囲に対してのインターバルサイズを6 %とするとx < 1.5 +0.6までの部分で次のピークを探すため、2秒付近のピークをとらえることができ、0.5秒間隔に存在するピークに対して包絡線を描く事ができます。
 
env1.png

インターバルサイズが10, 11 %の場合や15, 16 %の場合も同様の挙動を確認できます。インターバルサイズが15 %の時と16 %の時とを比較すると1.5秒の時間範囲内で最大のピークを捕まえる為、いくつかのピークについては包絡線から除外されている事が確認できます。
 
env3.png

また、時間軸を0-10.1秒に変更した場合、X範囲に対してのインターバルサイズを5 %の状態で(10.1 - 0) * 0.05 = 0.505秒となる為、0.5秒間隔のピークを含めた包絡線を描く事ができます。
 
env4.png