Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с фильтрацией сигнала.
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
drcham
В матлабе в симулинке есть ДЕМО QPSK сигнала. После некоторых нехитрых блоков ( q/i разделение, фильтр и блока вывода значений в workspace) получил txt файл с нефильтрованной компонентой I.
Далее моя задача состоит в фильтрации сигнала.
(точнее я должен сделать алгоритм фильтрации)
Беру для примера или фильтр Гаусса или raised cosine ( приподнятый косинус ).
Коэффициенты могу рассчитать матлабе.
У меня возник вопрос по применению этих коэффициентов к сигналу.
Я так понимаю, что если ввести в матлабе rcosfir(0.5) то получится массив коэффиентов фильтра b[i] размером от 1 до 31.
У меня же в файле 500 значений ( вытащенных из матлаба ).
Как правильно применить эти коэффиенты к сигналу?
Сверткой нельзя т.к. длина массивов разная.

Кто бы мог толково сказать как я в данном случае должен применить фильтр к сигналу?
Я пытался брать Импульсную х-ку для rcosfir ( из справки матлаба ), считатть по ней 500 значений и делать conv() но у меня не получилось ничего вразумительного.

Мне нужно понять как правильно посчитать коэффиенты фильтра и применить их сигналу. ( сейчас 500 точек, но это пример чтоб не заморачиваться с написанием QPSK модулятора на дельфи ).

В данный момент у меня ограничен доступ к интернету. Про книгу Теория и применение цифровой обработки сигналов. Л.Рабинер, Б.Гоулд я слышал, но скачать пока немогу. Помогите кто может, а то скоро сдавать, а спросить, кроме как тут, негде. Спасибо всем откликнувшимся.
Singer
Фильтр применяется по формуле y(n) = СУMM(x(n-i)*h(i)), i = 0..N-1
Так получаете каждый n - ый отсчет выхода y, используя N-1 предыдущих, где N- длина фильтра. Что вы привязались к длине сигнала, непонятно.
Tue
применить фильтр можно так: filter(b,a,x), подробнее смотри help filter
drcham
Tue как в матлабе понятно, мне надо это повторить в дельфи.
SInger спасибо, сейчас попробую.

Singer т.е. я так понимаю, что N никак не привязано к количеству взятых точек сигнала, т.е. матдаб вернул порядок фильтра - 31 и это будет N, так ?
А дальше просто y(n) Где n и будет число точек сигнала?
Singer
Цитата(drcham @ Dec 9 2007, 10:11) *
Tue как в матлабе понятно, мне надо это повторить в дельфи.
SInger спасибо, сейчас попробую.

Singer т.е. я так понимаю, что N никак не привязано к количеству взятых точек сигнала, т.е. матдаб вернул порядок фильтра - 31 и это будет N, так ?
А дальше просто y(n) Где n и будет число точек сигнала?

Именно так. Главное чтобы чтобы длина выборки сигнала не была меньше порядка фильтра N.
З.Ы. Только n - не число точек, а текущая позиция в выборке сигнала.
drcham
Спасибо, с фильтром разобрался.
А как фильтровать комплексный сигнал? Отдельно I и Q понятно, а комплексный через Re и Im и обратно собирать в комплексный?
artri
Цитата(drcham @ Dec 9 2007, 21:35) *
Спасибо, с фильтром разобрался.
А как фильтровать комплексный сигнал? Отдельно I и Q понятно, а комплексный через Re и Im и обратно собирать в комплексный?

1. Самый простой способ фильтрации - это свертка сигнала и фильтра
2. есть сигнал длины N и фильтр длины М - массивы коэффициентов.
3. И сигнал и фильтр дополняются нулями справа до длины L (степень двойки), так L >=N+M-1
4. Вычисляешь ДПФ (преобразование Фурье) этих двух сигналов.
5. Почленно перемножаешь полученные спектры.
6. Вычисляешь обратное ДПФ полученного спектра и получаешь сигнал из L точек - результат фильтрации
Singer
Цитата(artri @ Dec 10 2007, 00:13) *
1. Самый простой способ фильтрации - это свертка сигнала и фильтра
2. есть сигнал длины N и фильтр длины М - массивы коэффициентов.
3. И сигнал и фильтр дополняются нулями справа до длины L (степень двойки), так L >=N+M-1
4. Вычисляешь ДПФ (преобразование Фурье) этих двух сигналов.
5. Почленно перемножаешь полученные спектры.
6. Вычисляешь обратное ДПФ полученного спектра и получаешь сигнал из L точек - результат фильтрации

Вы описали хотя и самый быстрый, но не самый простой способ - т.н. быстрая свертка...самый простой способ для новичка это все таки свертка в лоб, по вышеуказанной формуле, там только умножение с накоплением без ДПФ и ОДПФ...ну это и так и понятно.
Насчет IQ - нужно фильтровать эти компоненты отдельно, как если бы это были два разных канала данных. Зачем что-то собирать? На входе два канала, на выходе 2 канала...
drcham
Большое спасибо!!
Библиотека, которая делает FFT и iFFT у меня есть, но почему-то мне показалось, что это гиморней.
А код свертки как показал Singer потребовал 15мин на расчет руками чтоб понять, что значения совпадают с матлабом и 15 мин на реализаию.
Но за алгоритм для FFT спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.