Здравствуйте уважаемые товарищи. Помогите пожалуйста. Стоит задача произвести расчет функции корреляции сигнала самого на себя.
Есть 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 отсчетов и все время его подавать не получилось. Может его зациклить надо?
Подскажите что делать? в какую сторону "копать"?
Заранее спасибо!
Расчет функции корреляции
-
- beginner
- Сообщения: 12
- Зарегистрирован: 14 авг 2011, 15:38
- Версия LabVIEW: 2013, 2014
- Благодарил (а): 2 раза
- Контактная информация:
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Расчет функции корреляции
Если я правильно понял, то можно сделать как-то так.
Т.е. режем массив отсчетов на кусочки и считаем их последовательно...
Т.е. режем массив отсчетов на кусочки и считаем их последовательно...
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 12
- Зарегистрирован: 14 авг 2011, 15:38
- Версия LabVIEW: 2013, 2014
- Благодарил (а): 2 раза
- Контактная информация:
Re: Расчет функции корреляции
Спасибо IvanLis. Ваш вариант решения помог.
Хотел переложить вашу идею на свою программу но что-то не получается.
Решил использовать ваш вариант.
Пытаюсь после блока CrossCorrelation VI выводить максимальное значение функции взаимной корреляции после каждого рассчитанного блока с целью его сохранения и тут выдает ошибку.
Может подскажите что не так, где моя ошибка.
Заранее спасибо!
Хотел переложить вашу идею на свою программу но что-то не получается.
Решил использовать ваш вариант.
Пытаюсь после блока CrossCorrelation VI выводить максимальное значение функции взаимной корреляции после каждого рассчитанного блока с целью его сохранения и тут выдает ошибку.
Может подскажите что не так, где моя ошибка.
Заранее спасибо!
- Вложения
-
- Untitled 1.vi
- (25.36 КБ) 169 скачиваний
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Расчет функции корреляции
Вынесите функцию закрытия файла и GEH за For Loop. Сейчас референс к файлу закрывается после первой итерации For Loop.
Проверьте, что папка D:\1 существует.
Проверьте, что папка D:\1 существует.
-
- beginner
- Сообщения: 12
- Зарегистрирован: 14 авг 2011, 15:38
- Версия LabVIEW: 2013, 2014
- Благодарил (а): 2 раза
- Контактная информация:
Re: Расчет функции корреляции
Огромное спасибо Blackman. Последовал вашему совету. Все получилось. Еще раз всем спасибо за помощь и оперативность.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 2 Ответы
- 308 Просмотры
-
Последнее сообщение maxim_MA
-
- 12 Ответы
- 910 Просмотры
-
Последнее сообщение JohnChaban