Как сравнить сходство двух сигналов в c #? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь сравнить сходство двух осциллограмм, основываясь на визуальном аспекте осциллограммы, а не на том, как они звучат.
Как бы я смог сделать это в c #?

1 Ответ

0 голосов
/ 27 сентября 2019

Если данные сигналов имеют формат, такой, что значение во время = 0 может быть проиндексировано как сигнал [0], а следующий «кадр» волны может быть проиндексирован как сигнал [1] и максимальное значениедля "кадра" волны - 1, а минимальное значение для "кадра" волны - -1, (а две волны имеют одинаковую длину в единицах "кадров"), тогда я думаю это должно работать: (не проверено)

//WaveForm 1 is w1 and WaveForm 2 is w2.
Stack<float> temp = new Stack<float>();
for(int i = 0; i < w1.Length; i++)
{
    //differenceFactor is the variable that decides what difference means.
    //at a value of 1, then a two waves with indexes -0.5 and 0.5 will be "100%" 
    //different. At a value of 0.5f then two waves with indexes -0.5 and 0.5 will be 
    //"50%" different. According to what I see, if differenceFactor > 1f then wave 
    //indexes greater than 1 unit apart are more than "100%" different, so probably don't 
    //do that.
    float difference = Math.Abs(w1[i] - w2[i]);
    temp.Push(((difference < differenceFactor) ? difference : differenceFactor) * 0.5f);
}
return temp.Average();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...