|
Реализация фильтра |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 41)
|
Jun 18 2013, 07:09
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(_Anatoliy @ Jun 18 2013, 09:13)  Как делать в частотной области - вообще не понятно,ведь время прихода сигнала не известно. Чем не устраивает быстрая свёртка? Коэффициенты фильтра можно считать на лету. Цитата(_Anatoliy @ Jun 18 2013, 09:13)  Может есть какие хитрые приёмы реализации подобных фильтров? Хитрые приёмы связаны с хитрыми CAZAC последовтаельностями, посмотрите последовательности Chu если так ЛЧМ хочется. Для некоторых последовательностей согласованные фильтры очень простые, например Golay Complementary Sequences.
|
|
|
|
|
Jun 18 2013, 07:23
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(petrov @ Jun 18 2013, 11:09)  Хитрые приёмы связаны с хитрыми CAZAC последовтаельностями, посмотрите последовательности Chu если так ЛЧМ хочется. А как обычный ЛЧM "натянуть" на CAZAC поcледовательности? Т.е. возможно разложение ЛЧМ в базисе хитрых последовательностей ?
--------------------
ну не художники мы...
|
|
|
|
|
Jun 18 2013, 07:48
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата alex_os: А как обычный ЛЧM "натянуть" на CAZAC поcледовательности? Чего там натягивать? cazac-последовательность сама по себе лчм.
|
|
|
|
|
Jun 18 2013, 10:18
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(_Anatoliy @ Jun 18 2013, 13:21)  Спасибо за ответ,начал поиск литературы.
Как я понял - быстрая свёртка это и есть то что я назвал в топовом сообщении "в частотной области". А здесь мне не понятен один момент:для FFT я набираю массив данных длиной 2^N,но может статься что в этом массиве окажется например 30% импульса ЛЧМ,следующие 70% попадут уже в следующий набор данных.Это как то скажется на качестве корреляции?Мне сдаётся что вместо одного пика на выходе согласованного фильтра я получу два пика(для первого и второго набора данных). Нужно использовать результаты предидидущих блоков. Как вариант см. код ниже. Используется тот факт что свертка суммы последовательностей есть сумма сверток. Хорошо написано было про это кажется у Рабинера с Голдом. Код N = 13; x = randn(1, 7*N); % signal h = randn(1,N); % impulse response of a filter
yref = conv(x, h);
y = zeros(1, length(x)+length(h)-1);
% size of FFT is 2*N !!! H = fft([h, zeros(1,N)]); prev_hx = zeros(1, N-1);
for i=1:7 X = fft([x((i-1)*N+1 : i*N), zeros(1,N)]); hx = ifft(H.*X); % прибавляем предидущий хвост hx(1:N-1) = hx(1:N-1) + prev_hx; prev_hx = hx(N+1:end-1); % запоминаем "хвост" y((i-1)*N+1 : i*N) = hx(1:N); end
figure(1); % Результаты вычисленные двумя способами идентичны plot(1:7*N, yref(1:7*N), 1:7*N, y(1:7*N))
--------------------
ну не художники мы...
|
|
|
|
|
Jun 20 2013, 06:26
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(_Anatoliy @ Jun 19 2013, 16:23)  Проясните,пожалуйста,один вопрос. У Вас в скрипте используется цикл 1:7,для примера это очень подходит. Вопрос касается практической реализации - можно ли этот цикл сделать бесконечным? Не станет ли алгоритм неустойчивым в процессе длительной работы? Я имею ввиду накопление погрешности фиксированной точки при вычислениях. Или нужно применять какие-то меры? Цикл может быть сколь угодно длинным. Накопление погрешности не происходит. Рекурсия отсутствует, т.е. выходной блок данных зависит от входных отсчетов, но не зависит от предидущего выходного блока.
--------------------
ну не художники мы...
|
|
|
|
|
Jun 20 2013, 08:17
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(alex_os @ Jun 20 2013, 07:26)  Цикл может быть сколь угодно длинным. Накопление погрешности не происходит. Рекурсия отсутствует, т.е. выходной блок данных зависит от входных отсчетов, но не зависит от предидущего выходного блока. Спасибо! Только всё равно пока не выходит каменный цветок. 1).Входной поток данных с АЦП равен 1GSPS.Понятно,что FFT на такой скорости я сделать не смогу.Если КИХ-фильтры легко распараллеливаются для снижения тактовой частоты,то как сделать такое распараллеливание для FFT я пока не представляю. 2).Допустим я нашёл метод распараллеливания FFT на два канала,тогда скорость работы каждого канала будет 500МГц. Думаю что для Виртекса это нормальная частота. Считаем дальше : длина ИХ составляет 25000 отсчётов,предполагаю(может ошибаюсь) что при распараллеливании FFT длина ИХ уменьшится вдвое,получаем 12500 отсчётов. Из приведенного Вами скрипта видно что размер FFT равен удвоенной длине ИХ,итого требуемый размер FFT составит 32768. FFT такого размера на частоте 500Мгц будет выполняться 132 мкс плюс IFFT , итого 264 мкс что больше требуемых 100 мкс. Поправьте,плз,если где ошибся.
|
|
|
|
|
Jun 20 2013, 08:30
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(_Anatoliy @ Jun 20 2013, 12:17)  Спасибо! Только всё равно пока не выходит каменный цветок. 1).Входной поток данных с АЦП равен 1GSPS.Понятно,что FFT на такой скорости я сделать не смогу.Если КИХ-фильтры легко распараллеливаются для снижения тактовой частоты,то как сделать такое распараллеливание для FFT я пока не представляю. Так нужно сигнал снести в ноль (если еще не снесен) отфильтровать и децимировать раза в 2-3. Центральная частота ЛЧМ примерно известна?
--------------------
ну не художники мы...
|
|
|
|
|
Jun 24 2013, 08:39
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(ViKo @ Jun 24 2013, 09:20)  Попробую и я ляпнуть глупость.  Вы фильтруете принятый ЛЧМ импульс, который придет неизвестно когда. У вас будет синхронизатор, позволяющий запускать фильтр синхронно? Импульсов же может быть много, они и перекрываться могут... Нет,синхронизатора не будет,входной сигнал может быть под шумом(отрицательный snr). Этот коррелятор сам является обнаружителем сигнала. Цитата(ViKo @ Jun 24 2013, 09:20)  Не сделать ли обычный фильтр с АЧХ, соответствующей спектру сигнала? Почитайте внимательно корневой пост, есть хоть один чип на котором можно собрать КИХ-фильтр с длиной ИХ 25000 семплов в реал-тайме? Если бы речь шла хотя-бы о 2000 семплов,то эта тема,очевидно,даже не возникла бы. Как альтернативу КИХ мне посоветовали применить быструю свёртку. Всё вроде склеивалось, пока не заметил что в алгоритме от alex_os перемножителей для перемножений частотных образов сигнала и ИХ нужно в два раза больше чем требуется для КИХ(чтобы не потерять "хвосты" от предыдущего кадра). За деревьями леса не заметил. Я в печали.
|
|
|
|
|
Jun 24 2013, 09:03
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(_Anatoliy @ Jun 24 2013, 12:39)  Нет,синхронизатора не будет,входной сигнал может быть под шумом(отрицательный snr). Этот коррелятор сам является обнаружителем сигнала.
Почитайте внимательно корневой пост, есть хоть один чип на котором можно собрать КИХ-фильтр с длиной ИХ 25000 семплов в реал-тайме? Если бы речь шла хотя-бы о 2000 семплов,то эта тема,очевидно,даже не возникла бы. Как альтернативу КИХ мне посоветовали применить быструю свёртку. Всё вроде склеивалось, пока не заметил что в алгоритме от alex_os перемножителей для перемножений частотных образов сигнала и ИХ нужно в два раза больше чем требуется для КИХ(чтобы не потерять "хвосты" от предыдущего кадра). За деревьями леса не заметил. Я в печали. Не печальтесь! Разделите длинный фильтр на несколько покороче ( типа в одно фильтре первая половина ИХ длинного фильтра, в другом вторая половина). Короткие фильтры запускаете параллельно выходы их суммируете. Каждый фильтр быстрой сверткой делать. Ув. termit писал про это.
--------------------
ну не художники мы...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|