Страница 1 из 1

Расчет функции корреляции

Добавлено: 14 авг 2019, 06:42
step
Здравствуйте уважаемые товарищи. Помогите пожалуйста. Стоит задача произвести расчет функции корреляции сигнала самого на себя.
Есть mono (одноканальный) звуковой сигнал длительностью 1 мин. в формате .wav с частотой дискретизации 44100 кГц. Необходимо производить расчет функции корреляции по данному сигналу, при этом необходимо брать первый блок длинной 44100 отсчета (1-ая секунда записи) и считать (функцию корреляции) сам на себя (1-ая секунда записи), далее брать следующий 2 блок отсчетов такой же длины 44100 отсчета из общего сигнала (2-ая секунда записи) и считается опять с первым блоком длиной 44100 отсчета (1-ая секунда записи), затем брать следующий 3 блок отсчетов (3-ая секунда записи) и считать опять с первым блоком (1-ая секунда записи) и так далее все 60 блоков (60 сек).
Главное условие чтоб значения функции считались по блочно 1 с 1, 2 с 1, 3 с 1, 4 с 1 и т.д. до конца
Пытался считать через автокорреляцию, а также через взаимную корреляцию (подавая на оба входа одну и ту же запись), однако в обоих случаях длина реализации (блок 44100) каждый раз сдвигается и берется следующий блок по отношению к предыдущему (т.е. 1 с 1, 2 со 2, 3 с 3 и т.д.). Пытался выделить массив - первые 44100 отсчетов и все время его подавать не получилось. Может его зациклить надо?
Подскажите что делать? в какую сторону "копать"?
Заранее спасибо!

Re: Расчет функции корреляции

Добавлено: 14 авг 2019, 10:46
IvanLis
Если я правильно понял, то можно сделать как-то так.
Т.е. режем массив отсчетов на кусочки и считаем их последовательно...
Снимок экрана от 2019-08-14 10-42-38.png
Untitled 1.vi
lv2014 save from 2016
(12.38 КБ) 160 скачиваний

Re: Расчет функции корреляции

Добавлено: 14 авг 2019, 17:59
step
Спасибо IvanLis. Ваш вариант решения помог.
Хотел переложить вашу идею на свою программу но что-то не получается.
Решил использовать ваш вариант.
Пытаюсь после блока CrossCorrelation VI выводить максимальное значение функции взаимной корреляции после каждого рассчитанного блока с целью его сохранения и тут выдает ошибку.
Может подскажите что не так, где моя ошибка.
Заранее спасибо!

Re: Расчет функции корреляции

Добавлено: 14 авг 2019, 18:45
Blackman
Вынесите функцию закрытия файла и GEH за For Loop. Сейчас референс к файлу закрывается после первой итерации For Loop.
Проверьте, что папка D:\1 существует.

Re: Расчет функции корреляции

Добавлено: 15 авг 2019, 14:48
step
Огромное спасибо Blackman. Последовал вашему совету. Все получилось. Еще раз всем спасибо за помощь и оперативность.