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

 
 
> Корреляция
inviZ
сообщение Jul 20 2007, 07:48
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 24-02-07
Пользователь №: 25 634



Извиняюсь заранее за глупый вопрос. Опыта в данной сфере - ноль, но так вышло, что необходимо разобраться, и как можно быстрее...
В общем, суть такова - есть BPSK-модулированный сигнал с частотой несущей 4.092Mhz, c частотой дискретизации 40.92 Mhz.
Задача - вычислить корреляцию сигнала с генерируемой псевдошумовой последовательностью (необходимо для "поиска" сигнала).
Проблема в том, что не могу максимально точно отфильтровать постоянную составляющую из соответствующих квадратурных и синфазных составляющих.
Максимум, что у меня получилось - на скриншоте (прямоугольный сигнал - соответствующая последовательность, т.е. в данном случае корреляция должна быть максимальна, но на деле, естественно, этого не происходит, т.к. принятый сигнал искажен). Пробовал разные фильтры - все равно искажения довольно сильные.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
inviZ
сообщение Jul 20 2007, 11:10
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 24-02-07
Пользователь №: 25 634



Ну в том-то и дело, что вычисляю все возможные значения корреляционного интеграла от 2х последовательностей (с помощью fft, свертки, и обратного fft) на интервале, равном периоду последовательности.
Тем самым я должен оценить значение сдвига принимаемой и генерируемой последовательности - т.е. какое-то из этих значений нормированного корреляционного интеграл должно быть близко к единице, если принятый сигнал содержит эту же последовательность.

В данном случае, видимо, из-за шума, все значения корреляционной функции очень близки к нулю. Причем без разницы - отфильтровываю ли я значения I и Q или нет - значения корреляционной функции незначительно отличаются при этом. Вот в том и проблема.

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

Код
clear;
load('signal.mat'); %загружаем сигнал
load('gold.mat');  %загружаем последовательность
fc = 4.092e6; %частота несущей
fs = 10*4.092e6; %частота дискретизации
ts = 1/fs; %время сэмпла
n = fs/1000; %количество сэмплов в одной миллисекунде
nn = [0:n-1]; %номера отсчетов дискр. времени
S = [S(1:n)]; %первая миллисекунда сигнала

expfreq=exp(j*2*pi*fc*ts*nn);
sine = imag(expfreq);        
cosine = real(expfreq);
I = cosine.*S;
Q = sine.*S;

%здесь была фильтрация

IQfreq = fft(I+j*Q);
codefreq = conj(fft(G0));
convcodeIQ = IQfreq.*codefreq';
result = abs(ifft(convcodeIQ))/n;
[peak codephase]=max(result)
codephaseChips = round(1023 - (codephase/40920)*1023)


Сейчас еще нарыл схему (в аттаче). Судя по ней - все верно, в общем-то. Значит проблема все же в фильтрации. До раздела про дискретные фильтры, в общем-то еще не добрался (ЦОС изучаю-то дня три всего)... Если кто подскажет, какой фильтр лучше использовать для этих целей, буду рад. Фильтры вроде фильтров Баттерворта и Чебышева, как я понял, нецелесообразно использовать из-за плохих фазовых, а соответственно и временных характеристик. А дискретного фильтра Бесселя, как я понял, не существует...

Сообщение отредактировал inviZ - Jul 20 2007, 12:08
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 08:52
Рейтинг@Mail.ru


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