-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 113
1

Коррелятор сигналов в Матлаб

19.04.2020, 14:34. Показов 544. Ответов 7

Делаю коррелятор сигналов в Матлабе.
Нужно найти во входном сигнале небольшой участок с другим сигналом.
все сигналы комплексные и модулированные.

Обозначение сигналов:
входной сигнал - Basic signal.
сигналы, которые нужно найти - modUW_1, modUW_2, modUW_3 и т.д.

Корреляцию нахожу с помощью функции xcorr()
[C1,lag1] = xcorr(basicSignal,modUW_1);

Проблема в том, что какой бы я не брал сигнал modUW, результат функции xcorr() примерно одинаковый: она коцает входной сигнал в тех местах, где он есть и все. См. рисунок.
Коррелятор сигналов в Матлаб

Но правильный результат корреляции должен давать всплеск в том месте, где сигналы максимально похожи.
Как это получить?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2020, 14:34
Ответы с готовыми решениями:

Прохождение сигналов через апериодические звенья в матлаб
Доброго времени суток, Уважаемые Форумчане! Столкнулся с такой проблемой: Есть необходимость...

Открыть txt-файл при его формировании в матлаб и сохранении вне матлаб
С помощью операторов fopen, fprintf и fclose в файл "Press.txt" записана текстовая информация : ...

При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается и происходит дамп
При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается. При...

Построить временные диаграммы выходных сигналов триггеров для заданных входных сигналов
1 задание. Построить временную диаграмму выходных сигналов T-триггера при заданных входных...

7
163 / 134 / 60
Регистрация: 16.05.2015
Сообщений: 372
19.04.2020, 15:15 2
Цитата Сообщение от prokino Посмотреть сообщение
Но правильный результат корреляции должен давать всплеск в том месте, где сигналы максимально похожи.
А если на каком-то участке таких мест несколько?
Вы бы поделились всеми тремя сигналами. М.б. там не все так неправильно.
0
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 113
19.04.2020, 15:52  [ТС] 3
ida2, вот сигналы. Это mat-файл в zip архиве.
Входной сигнал - это сырые данные из эфира, I и Q составляющие.
Возможно, их нужно правильно скомпоновать для дальнейшей обработки.
signals.zip
0
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 113
19.04.2020, 17:08  [ТС] 4
basicSignal - беру из файла.
modUW_1 - готовлю самостоятельно:

binData1 = [0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1];
burst = diff_enc(binData1);% DIFFERENTIAL ENCODING.
[I,Q] = gmsk_mod(burst,Tb,OSR,BT);% GMSK MODULATION OF BURST SEQUENCE
modUW_1 = I .* cos(2*pi*f0 * t) - 1i * Q .* sin(2*pi*f0 * t);
0
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 113
19.04.2020, 21:25  [ТС] 5
Я делаю кoppелятop сигнала GSM в Matlab.
Необходимо найти Normal burst во входном сигнале.
все сигналы являются сложными и модулированными.

Я нахожу коoppеляцию с помощью функции xcorr()

Matlab M
1
[C1, lag1] = xcorr (basicSignal, modUW_1);
basicSignal - я читаю из файла.
modUW_1 - я готовлю сам:

Matlab M
1
2
3
4
binData1 = [0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1];% это надо найти во входном сигнале
Burst = diff_enc (binData1);% DIFFERENTIAL ENCODING.
[I, Q] = gmsk_mod (пакет, Tb, OSR, BT);% GMSK МОДУЛЯЦИЯ   ПОСЛЕДОВАТЕЛЬНОСТИ
modUW_1 = I. * cos (2 * pi * f0 * t) - 1i * Q. * sin (2 * pi * f0 * t);
Может я ошибаюсь в алгоритме.
Но я уверен, что уже есть реализация моей задачи.
Если вы знаете, где взять готовый матлабовский код, то дайте ссылку.
0
163 / 134 / 60
Регистрация: 16.05.2015
Сообщений: 372
19.04.2020, 21:59 6
prokino, Какой-либо аномалии в результатах я не наблюдаю (см. код и картину).

На графиках модули комплексных сигналов.

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

Кликните здесь для просмотра всего текста

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
subplot(4, 1, 1);
plot(abs(basicSignal));
title('abs(basicSignal)');
 
subplot(4, 1, 2);
plot(abs(modUW_1));
title('abs(modUW_1)');
 
subplot(4, 1, 3);
plot(abs(basicSignal));
title('abs(basicSignal)');
 
[C1,lag1] = xcorr(basicSignal', modUW_1);
subplot(4, 1, 4);
plot(lag1((numel(lag1)+1)/2:numel(lag1)), abs(C1((numel(C1)+1)/2:numel(C1))));
title('abs(C1)');
0
Миниатюры
Коррелятор сигналов в Матлаб  
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 113
19.04.2020, 23:31  [ТС] 7
ida2, аномалия в том, что вместо modUW_1 можно написать что угодно и результат корреляции будет такой же, т.е. там, где сигнал есть, там и будет результат корреляции.
Не пойму, почему результат корреляции просто "ломает" исследуемый сигнал.
ВОт это я и спрашиваю.
0
163 / 134 / 60
Регистрация: 16.05.2015
Сообщений: 372
20.04.2020, 01:04 8
Цитата Сообщение от prokino Посмотреть сообщение
аномалия в том, что вместо modUW_1 можно написать что угодно и результат корреляции будет такой же, т.е. там, где сигнал есть, там и будет результат корреляции.
Так и в этом нет ничего удивительного (в вашем случае). Обратите внимание, что оба ваших сигнала не центрированы относительно 0. А тестируемый сигнал еще и не нормирован по амплитуде (аж 10^4). А функция xcorr сама всего этого не делает. Т.е. ненулевые (положительные) отсчеты шаблона умножаются на ненулевые (оч. большие, всегда положительные) отсчеты тестируемого сигнала ... Вот вам и "аномалия".

Здесь стоит либо (как минимум) центрировать сигналы перед вызовом xcorr, либо попробовать использовать xcov (она, вроде, сама центрирует сигналы).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2020, 01:04

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Построить временные диаграммы выходных сигналов триггеров для заданных входных сигналов
1 задание. Построить временную диаграмму выходных сигналов T-триггера при заданных входных...

Построить временные диаграммы выходных сигналов триггеров для заданных входных сигналов
1 задание. Построить временную диаграмму выходных сигналов T-триггера при заданных входных...

Обработка ЧМ сигналов(спектры ЧМ сигналов)
Доброго времени суток! Ранее задавала вопрос: "Алгоритм обработки ЧМ сигналов, основанный на...

матлаб
Привет,ребят помогите пожалуйста исправить ошибку в функции. x=1:0.1:2;...

Матрица матлаб
Помогите тормозу. В матлабе открыто изображение в виде матрицы значений пикселей. Собственно, я...

матлаб с нуля
Я потихоньку осваиваю матлаб...Кто-нибудь может помочь? Даны некоторые переменные которые имеют...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.