|
Реализация фильтра |
|
|
|
 |
Ответов
|
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, 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. Центральная частота ЛЧМ примерно известна?
--------------------
ну не художники мы...
|
|
|
|
Сообщений в этой теме
_Anatoliy Реализация фильтра Jun 18 2013, 05:13 Lmx2315 ..я может глупость скажу, но мне интересно - почем... Jun 18 2013, 05:48 _Anatoliy Цитата(Lmx2315 @ Jun 18 2013, 06:48) ..я ... Jun 18 2013, 06:12  Maverick Цитата(_Anatoliy @ Jun 18 2013, 09:12)
В... Jun 18 2013, 06:37   _Anatoliy Цитата(Maverick @ Jun 18 2013, 07:37) Воз... Jun 18 2013, 06:54    alex_os Сигнал должен быть комплексным, оцифровываем на 30... Jun 18 2013, 07:03 alex_os Цитата(petrov @ Jun 18 2013, 11:09) Хитры... Jun 18 2013, 07:23  petrov Цитата(alex_os @ Jun 18 2013, 11:23) А ка... Jun 18 2013, 07:31   _Anatoliy Цитата(alex_os @ Jun 18 2013, 11:18) Нужн... Jun 18 2013, 10:31    petrov Цитата(_Anatoliy @ Jun 18 2013, 14:31) О,... Jun 18 2013, 10:58     _Anatoliy Цитата(petrov @ Jun 18 2013, 11:58) Возмо... Jun 18 2013, 11:37          _Anatoliy Цитата(petrov @ Jun 20 2013, 15:55) Бабоч... Jun 20 2013, 14:02           petrov Ну а что такого написать FFT самому? Куда проще то... Jun 20 2013, 14:12            _Anatoliy Цитата(petrov @ Jun 20 2013, 16:12) Ну а ... Jun 20 2013, 14:16 thermit Цитатаalex_os:
А как обычный ЛЧM "натянуть... Jun 18 2013, 07:48 thermit Вы помоему круто просчитались. Для вычисления непр... Jun 20 2013, 14:26 _Anatoliy Цитата(thermit @ Jun 20 2013, 16:26)
Спа... Jun 20 2013, 14:34  Maverick Цитата(_Anatoliy @ Jun 20 2013, 17:34)
к... Jun 21 2013, 21:06   _Anatoliy Цитата(Maverick @ Jun 21 2013, 22:06)
Сп... Jun 23 2013, 08:51    _Anatoliy Сдаётся мне что применение быстрой свёртки для это... Jun 24 2013, 04:50    Lmx2315 QUOTE (_Anatoliy @ Jun 23 2013, 12:51) По... Jun 24 2013, 14:26     _Anatoliy Цитата(Lmx2315 @ Jun 24 2013, 15:26) ..за... Jun 24 2013, 15:20      Lmx2315 QUOTE (_Anatoliy @ Jun 24 2013, 19:20) По... Jun 24 2013, 17:14 ViKo Попробую и я ляпнуть глупость. Вы фильтруете прин... Jun 24 2013, 08:20 _Anatoliy Цитата(ViKo @ Jun 24 2013, 09:20) Попробу... Jun 24 2013, 08:39  alex_os Цитата(_Anatoliy @ Jun 24 2013, 12:39) Не... Jun 24 2013, 09:03   _Anatoliy Цитата(alex_os @ Jun 24 2013, 10:03) Не п... Jun 24 2013, 09:13    alex_os Цитата(_Anatoliy @ Jun 24 2013, 13:13) Но... Jun 24 2013, 09:25     _Anatoliy Цитата(alex_os @ Jun 24 2013, 10:25) Скор... Jun 24 2013, 10:00  petrov Цитата(_Anatoliy @ Jun 24 2013, 12:39) Ка... Jun 24 2013, 10:32   _Anatoliy Цитата(petrov @ Jun 24 2013, 11:32) в быс... Jun 24 2013, 10:48 thermit В общем и целом - да. При децимации длина в отсчет... Jun 24 2013, 14:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|