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

Захват, обработка и генерирование сигнала

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

Postby step on 14 Aug 2019, 06:42

Здравствуйте уважаемые товарищи. Помогите пожалуйста. Стоит задача произвести расчет функции корреляции сигнала самого на себя.
Есть 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 отсчетов и все время его подавать не получилось. Может его зациклить надо?
Подскажите что делать? в какую сторону "копать"?
Заранее спасибо!
Attachments
CrossCorrelation.vi
LV 14.0 (64 bit)
(66.1 KiB) Downloaded 11 times
Расчет функци корреляции.jpg
Попытка объяснить, как необходимо чтоб считал
step
interested
interested
 
Posts: 8
Joined: 14 Aug 2011, 15:38
LabVIEW Version: 2013, 2014
Karma: 0

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

Postby IvanLis on 14 Aug 2019, 10:46

Если я правильно понял, то можно сделать как-то так.
Т.е. режем массив отсчетов на кусочки и считаем их последовательно...
Снимок экрана от 2019-08-14 10-42-38.png

Untitled 1.vi
lv2014 save from 2016
(12.38 KiB) Downloaded 9 times
User avatar
IvanLis
professor
professor
 
Posts: 4819
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 778
hardware VIP bloggers teachers

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

Postby step on 14 Aug 2019, 17:59

Спасибо IvanLis. Ваш вариант решения помог.
Хотел переложить вашу идею на свою программу но что-то не получается.
Решил использовать ваш вариант.
Пытаюсь после блока CrossCorrelation VI выводить максимальное значение функции взаимной корреляции после каждого рассчитанного блока с целью его сохранения и тут выдает ошибку.
Может подскажите что не так, где моя ошибка.
Заранее спасибо!
Attachments
Untitled 1.vi
(25.36 KiB) Downloaded 8 times
Ошибка.jpg
step
interested
interested
 
Posts: 8
Joined: 14 Aug 2011, 15:38
LabVIEW Version: 2013, 2014
Karma: 0

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

Postby Blackman on 14 Aug 2019, 18:45

Вынесите функцию закрытия файла и GEH за For Loop. Сейчас референс к файлу закрывается после первой итерации For Loop.
Проверьте, что папка D:\1 существует.
Blackman
leader
leader
 
Posts: 882
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 259
VIP

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

Postby step on 15 Aug 2019, 14:48

Огромное спасибо Blackman. Последовал вашему совету. Все получилось. Еще раз всем спасибо за помощь и оперативность.
step
interested
interested
 
Posts: 8
Joined: 14 Aug 2011, 15:38
LabVIEW Version: 2013, 2014
Karma: 0


Return to Обработка сигнала

Who is online

Users browsing this forum: No registered users and 1 guest

cron