реклама на сайте
подробности

 
 
> Сравнение сигнала с эталонами
Sergey Krivonoso...
сообщение Dec 18 2017, 16:22
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 10-07-08
Из: Днепропетровск
Пользователь №: 38 859



Добрый вечер! Есть массив 128 точек выборок, который соответствует периоду сигнала. Есть 100 эталонов сигнала, которые представляют так же 128 точек выборок, равное периоду сигнала. Необходимо определить насколько сигнал похож на эталон. Проблема заключается в том, что сигнал может отличатся по фазе с эталоном и зачастую искажен. Если тупо перебором, то нужно сравнить 128*128 (со сдвигом) для одного эталона. Это очень долго. Подозреваю, что данная проблема решается с помощью преобразований Фурье, но как приступить я не знаю. Может кто то подскажет метод решения.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
seniorandre
сообщение Dec 18 2017, 17:12
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 6-07-12
Из: г.Нижний Новгород
Пользователь №: 72 651



Цитата(Sergey Krivonosov @ Dec 18 2017, 19:22) *
Подозреваю, что данная проблема решается с помощью преобразований Фурье, но как приступить я не знаю. Может кто то подскажет метод решения.

Cуществуют конечно научный способы вычисления корреляции, но можно попробовать по типу разложения по квадратурам. Сдвинуть тестовый сигнал на 90гр. и сделать перемножение сигнала на две квадратуры тестового сигнала, а потом посчитать что то типа модуля.
Ну либо если нужен научный метод, то искать алгоритмы вычисления корреляции.
Go to the top of the page
 
+Quote Post
Sergey Krivonoso...
сообщение Dec 19 2017, 09:42
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 10-07-08
Из: Днепропетровск
Пользователь №: 38 859



Цитата(seniorandre @ Dec 18 2017, 19:12) *
Cуществуют конечно научный способы вычисления корреляции, но можно попробовать по типу разложения по квадратурам. Сдвинуть тестовый сигнал на 90гр. и сделать перемножение сигнала на две квадратуры тестового сигнала, а потом посчитать что то типа модуля.
Ну либо если нужен научный метод, то искать алгоритмы вычисления корреляции.

Спасибо за подсказку, я не мог понять, где взять мнимую часть сигнала. Действительно сдвинув сигнал на 90 градусов я получаю мнимую часть сигнала. Для одной свертки я должен получить 4 массива: M1, M2, M3, M4, где M1 cos сигнала, M2 sin сигнала, M3 cos эталона, M4 sin эталона. Отдельно суммирую от n=0..127: M1(n)*M3(n) - M2(n)*M4(n) и M1(n)*M4(n)+M3(n)*M2(n). Затем эти суммы возвожу в квадрат и суммирую и извлекаю корень квадратный. Что мне даст эта свертка? Я так понимаю, что если сигналы совпадают я получу максимальное значение амплитуды?



Цитата(el.d @ Dec 19 2017, 08:37) *
Это называется преобразование Гильберта.

Только зачем оно здесь? Разве в описанном методе есть какое-то сравнение сигнала с эталоном?

Что касается вопроса ТС. Да, можно применить преобразование Фурье.

Для сравнения сигналов используют понятие корреляции. Вычисление корреляции двух сигналов = вычисление свёртки этих двух сигналов.

БПФ можно использовать для вычисления так называемой быстрой свёртки. В спектральной области свёртка заменяется на простое умножение.

То есть, схема примерно такая: есть принятый сигнал s(t) и набор эталонов Ai(t). Вычисляем БПФ[s(t)] и БПФ[Ai(t)]. Вычисляем x = БПФ[s(t)]*БПФ[Ai(t)]. В конце вычисляем ОБПФ[x].

Предположим я вычислил БПФ и получил амплитуды разных частот. На какое количество частот разбить сигнал? Для каждой частоты нужно произвести свертку. Если частот много - это слишком затратно по вычислениям, даже если применить БПФ. Не пройдет ли одна свертка с эталоном сигнала, как я написал выше?


--------------------
Go to the top of the page
 
+Quote Post
el.d
сообщение Dec 19 2017, 10:37
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 2-08-17
Пользователь №: 98 600



Цитата(Sergey Krivonosov @ Dec 19 2017, 10:42) *
Спасибо за подсказку, я не мог понять, где взять мнимую часть сигнала. Действительно сдвинув сигнал на 90 градусов я получаю мнимую часть сигнала. Для одной свертки я должен получить 4 массива: M1, M2, M3, M4, где M1 cos сигнала, M2 sin сигнала, M3 cos эталона, M4 sin эталона. Отдельно суммирую от n=0..127: M1(n)*M3(n) - M2(n)*M4(n) и M1(n)*M4(n)+M3(n)*M2(n). Затем эти суммы возвожу в квадрат и суммирую и извлекаю корень квадратный. Что мне даст эта свертка? Я так понимаю, что если сигналы совпадают я получу максимальное значение амплитуды?




Предположим я вычислил БПФ и получил амплитуды разных частот. На какое количество частот разбить сигнал? Для каждой частоты нужно произвести свертку. Если частот много - это слишком затратно по вычислениям, даже если применить БПФ. Не пройдет ли одна свертка с эталоном сигнала, как я написал выше?

Ну вы писали, что у вас сигнал из 128 отсчетов. Следовательно, БПФ тоже должен быть на 128 точек - получается, для сравнения сигнала с одним из эталонов надо 2 БПФ, 128 умножений и ОБПФ.

Сообщение отредактировал el.d - Dec 19 2017, 10:40
Go to the top of the page
 
+Quote Post
Sergey Krivonoso...
сообщение Dec 19 2017, 11:12
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 10-07-08
Из: Днепропетровск
Пользователь №: 38 859



Цитата(el.d @ Dec 19 2017, 12:37) *
Ну вы писали, что у вас сигнал из 128 отсчетов. Следовательно, БПФ тоже должен быть на 128 точек - получается, для сравнения сигнала с одним из эталонов надо 2 БПФ, 128 умножений и ОБПФ.

Не так, для построения БПФ на 128 частот потребуется применить 127 "бабочек". Каждая бабочка это 4 умножения и 4 суммирования. Следовательно, умножений нужно сделать 127*4=508. Для эталонов БПФ выполнять не нужно, его можно выполнить 1 раз и забить в память. После БПФ нам нужно рассчитать амплитуду сигнала для каждой из 128 частот. Т.е. возвести в квадрат действительную и мнимую часть, сложить и найти корень квадратный. И можно сравнивать с амплитудами эталонов забитыми в память. Зачем мне делать обратное преобразование Фурье?


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Sergey Krivonosov   Сравнение сигнала с эталонами   Dec 18 2017, 16:22
|- - el.d   Цитата(seniorandre @ Dec 18 2017, 18:12) ...   Dec 19 2017, 06:37
|- - _pv   Цитата(el.d @ Dec 19 2017, 16:37) получае...   Dec 19 2017, 10:49
||- - el.d   Цитата(_pv @ Dec 19 2017, 11:49) с учётом...   Dec 19 2017, 10:53
|- - el.d   Цитата(Sergey Krivonosov @ Dec 19 2017, 12...   Dec 19 2017, 11:24
|- - Sergey Krivonosov   Цитата(el.d @ Dec 19 2017, 13:24) Потому ...   Dec 19 2017, 11:36
|- - el.d   Цитата(Sergey Krivonosov @ Dec 19 2017, 12...   Dec 19 2017, 11:40
|- - Sergey Krivonosov   Цитата(el.d @ Dec 19 2017, 13:40) Наприме...   Dec 19 2017, 12:53
|- - el.d   Цитата(Sergey Krivonosov @ Dec 19 2017, 13...   Dec 19 2017, 13:58
- - _pv   128*128*100 == 1.6E6 умножений, на калькуляторе сч...   Dec 18 2017, 17:38
- - maugli   Почитайте про согласованный фильтр.   Dec 19 2017, 09:44
- - Alex11   Очень я сомневаюсь, что Фурье в этом случае будет ...   Dec 19 2017, 15:17
|- - Sergey Krivonosov   Цитата(Alex11 @ Dec 19 2017, 17:17) Очень...   Dec 19 2017, 15:35
- - Alex11   ЦитатаЗатем он повторяется без разрывов. А частота...   Dec 19 2017, 16:33
|- - Sergey Krivonosov   Цитата(Alex11 @ Dec 19 2017, 18:33) А час...   Dec 19 2017, 17:10
- - krux   сравнение БПФ сигнала по всему диапазону выборок с...   Dec 19 2017, 17:28
|- - _pv   Цитата(krux @ Dec 20 2017, 00:28) сравнен...   Dec 20 2017, 15:11
|- - krux   Цитата(_pv @ Dec 20 2017, 18:11) а это за...   Dec 20 2017, 15:26
|- - _pv   Цитата(krux @ Dec 20 2017, 22:26) для нач...   Dec 20 2017, 15:59
- - Alex11   ЦитатаЧастота оцифровки строго кратна периоду сигн...   Dec 20 2017, 09:21
- - Sergey Krivonosov   Большое спасибо всем за оперативные ответы! Да...   Dec 20 2017, 11:37


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 12:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01428 секунд с 7
ELECTRONIX ©2004-2016