Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: быстрый FIR для комплексного сигнала
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Relayer
Приветствую!

в качестве предисловия - занимаюсь опенсорсным SDR софтом. возник следующий проблемс. имеем квадратурные каналы I/Q. применяем к ним комплексное ффт. хотим через fast convolution сделать band pass filter. а фигушки smile.gif коэффициенты FIR"а рассчитанные через sync+окно вещественные - результат свертки симметричен относительно 0Hz. в принципе я "выкрутился" - построил low pass коэфф и комплексно домножил на сдвиг sin-cos. работает, фильтрует, но чует мое сердце что где-то есть общая метода рассчета комплексных коэфф FIR-фильтров для быстрой свертки. подскажите кто чем может smile.gif
alex_os
Цитата(Relayer @ Apr 10 2008, 23:21) *
Приветствую!

в качестве предисловия - занимаюсь опенсорсным SDR софтом. возник следующий проблемс. имеем квадратурные каналы I/Q. применяем к ним комплексное ффт. хотим через fast convolution сделать band pass filter. а фигушки smile.gif коэффициенты FIR"а рассчитанные через sync+окно вещественные - результат свертки симметричен относительно 0Hz. в принципе я "выкрутился" - построил low pass коэфф и комплексно домножил на сдвиг sin-cos. работает, фильтрует, но чует мое сердце что где-то есть общая метода рассчета комплексных коэфф FIR-фильтров для быстрой свертки. подскажите кто чем может smile.gif

Ну все правильно Вы сделали. Взяли ФНЧ и перенесли на нужную комплексную частоту. Чего тут еще придумаешь?
Pashken
Цитата(Relayer @ Apr 11 2008, 00:21) *
Приветствую!

в качестве предисловия - занимаюсь опенсорсным SDR софтом. возник следующий проблемс. имеем квадратурные каналы I/Q. применяем к ним комплексное ффт. хотим через fast convolution сделать band pass filter. а фигушки smile.gif коэффициенты FIR"а рассчитанные через sync+окно вещественные - результат свертки симметричен относительно 0Hz. в принципе я "выкрутился" - построил low pass коэфф и комплексно домножил на сдвиг sin-cos. работает, фильтрует, но чует мое сердце что где-то есть общая метода рассчета комплексных коэфф FIR-фильтров для быстрой свертки. подскажите кто чем может smile.gif


Синфазная и квадратурная составляющие ничем по частотным свойствам друг от друга не отличаются. Поэтому их можно пропускать через одинаковые фильтры. Или, как рекомендуется в литературе, нужно разработать фильтр с семплом Fs, а I и Q пропускать через него поочередно с семплом Fs/2 (они же сдвинуты на 90 град).
Если нужна теория, почитай на сайте Ксайлинкса даташиты:
http://www.xilinx.com/ipcenter/catalog/log...docs/da_fir.pdf
http://www.xilinx.com/support/documentatio...piler_ds534.pdf
http://www.xilinx.com/ipcenter/catalog/log...ocs/mac_fir.pdf

Здесь много теоретической информации (даже если с плисинами не работаешь)
Stanislav
Цитата(Relayer @ Apr 11 2008, 00:21) *
...в принципе я "выкрутился" - построил low pass коэфф и комплексно домножил на сдвиг sin-cos. работает, фильтрует, но чует мое сердце что где-то есть общая метода рассчета комплексных коэфф FIR-фильтров для быстрой свертки. подскажите кто чем может
Методика расчёта - правильная, сам так делал.
Только зачем это Вам? Вы же фильтрацию в частотной области делаете, или я не понял чего-то? Для этого достаточно домножить результат комплексного ДПФ на вещественную функцию "АЧХ" фильтра, и сделать ОДПФ.

Цитата(Pashken @ Apr 11 2008, 09:48) *
Синфазная и квадратурная составляющие ничем по частотным свойствам друг от друга не отличаются. Поэтому их можно пропускать через одинаковые фильтры. Или, как рекомендуется в литературе, нужно разработать фильтр с семплом Fs, а I и Q пропускать через него поочередно с семплом Fs/2 (они же сдвинуты на 90 град).
..........................................
Здесь много теоретической информации (даже если с плисинами не работаешь)
Это совершенно из другой оперы.
Здесь речь идёт о фильтрации через ДПФ.
Relayer
Цитата(alex_os @ Apr 11 2008, 08:45) *
Ну все правильно Вы сделали. Взяли ФНЧ и перенесли на нужную комплексную частоту. Чего тут еще придумаешь?


ну ... эээ ... как бы хотелось теории и вских вумных книжек на эту тему smile.gif с bandpass и bandstop это все получается. а вот low/high pass да в комплексной таким макаром уже не получится. в принципе оно и не особо нужно, но так сказать "для общего развития" не помешало бы smile.gif

Цитата(Stanislav @ Apr 11 2008, 09:09) *
Для этого достаточно домножить результат комплексного ДПФ на вещественную функцию "АЧХ" фильтра, и сделать ОДПФ.

вы еще предложите значения для ачх фильтра брать только из "+1" и "0" smile.gif
fontp
Цитата(Relayer @ Apr 11 2008, 11:43) *
ну ... эээ ... как бы хотелось теории и вских вумных книжек на эту тему smile.gif с bandpass и bandstop это все получается. а вот low/high pass да в комплексной таким макаром уже не получится. в принципе оно и не особо нужно, но так сказать "для общего развития" не помешало бы smile.gif


Честно говоря не очень понятно о чём Вы рассказывете как на Привозе, приходится догадываться
Если я правильно догадался, то вот есть такая фигня - синтез всяких фильтров посредством переноса спектра. Здесь есть Application Note
Multi-rate filter design

у них была ещё программа для синтеза таких крутых фильтров, называется mrf. Так это AN для той программы
Как водится программка есть в сети и крякнута
Relayer
Цитата(fontp @ Apr 11 2008, 11:37) *
Честно говоря не очень понятно о чём Вы рассказывете

за ссылку спасибо - вечерком почитаю. а рассказываю я вот о чем - к примеру хочу я спроектировать фильтр который пропускает все отрицательные частоты и положительные предположим до F. т.е. lowpass но в комплексной области через быструю свертку.
fontp
Цитата(Relayer @ Apr 11 2008, 15:22) *
за ссылку спасибо - вечерком почитаю. а рассказываю я вот о чем - к примеру хочу я спроектировать фильтр который пропускает все отрицательные частоты и положительные предположим до F. т.е. lowpass но в комплексной области через быструю свертку.


Что Вы называете быстрой свёрткой? Быстрые свёртки бывают разные. Посредством преобразование Фурье?
Цитата(Relayer @ Apr 11 2008, 00:21) *
метода рассчета комплексных коэфф FIR-фильтров для быстрой свертки. подскажите кто чем может smile.gif


непонятна постановка задачи. Если у Вас фильтрация идёт через ДПФ и известна частотная характеристика - то причём здесь FIR. Умножил спектры -и всё. Или Вам нужно получить заданную импульсную характеристику?

Ладно, забудьте :-) В том материале, что я привёл строятся эффективные полосовые фильтры в исходном домене по следующей методике 1) перенос спектра в 0 2) фильтрация посредством фильтра НЧ
3) возвращают спект на место на заданную частоту

Вычислительный эффект получают передискретизацией перед фильтрацией НЧ в соответствии с полосой фильтра
Relayer
Цитата(fontp @ Apr 11 2008, 14:26) *
Что Вы называете быстрой свёрткой? Быстрые свёртки бывают разные. Посредством преобразование Фурье?


ну естественно. через него родимого - я же написал об этом в начале темы

Цитата(fontp @ Apr 11 2008, 14:26) *
непонятна постановка задачи. Если у Вас фильтрация идёт через ДПФ и известна частотная характеристика - то причём здесь FIR. Умножил спектры -и всё. Или Вам нужно получить заданную импульсную характеристику?


йя-йя. танцуем от windowed sinc-filter

Цитата(fontp @ Apr 11 2008, 14:26) *
Ладно, забудьте :-) В том материале, что я привёл строятся эффективные полосовые фильтры в исходном домене по следующей методике 1) перенос спектра в 0 2) фильтрация посредством фильтра НЧ 3) возвращают спект на место на заданную частоту


ну я собственно все это и сделал ... в частотной области. lowpass/highpass сдвинутый на нужное смещение по частоте. как результат для комплексного сигнала такая схема реализует bandpass/bandstop фильтр для произвольных Flo и Fhi, в том числе и отрицательны
Stanislav
Цитата(Relayer @ Apr 11 2008, 11:43) *
вы еще предложите значения для ачх фильтра брать только из "+1" и "0" smile.gif
Не понял юмора.
Вы это о чём, уважаемый? Прошу пояснить.


Цитата(fontp @ Apr 11 2008, 12:37) *
Честно говоря не очень понятно о чём Вы рассказывете как на Привозе, приходится догадываться
Если я правильно догадался, то вот есть такая фигня - синтез всяких фильтров посредством переноса спектра.
По-моему, он просто не знает, как нужно фильтровать сигнал в частотной области. smile.gif
А также как умножить вещественное число на комплексное. biggrin.gif
Relayer
Цитата(Stanislav @ Apr 11 2008, 18:28) *
Не понял юмора. Вы это о чём, уважаемый? Прошу пояснить.


я это к эффекту Гиббса если вы не сразу соображаете

Цитата(Stanislav @ Apr 11 2008, 18:28) *
По-моему, он просто не знает, как нужно фильтровать сигнал в частотной области. smile.gif
А также как умножить вещественное число на комплексное. biggrin.gif


хочу вам напомнить уважаемый вы наш всезнайка и писатель (интересно - найдется ли такая тема где вы не продемострировали свою эрудицию) - для личной переписки есть личные сообщения. впредь прошу вас воздержаться от писанины в этой теме. а особенно не по существу. если вам не терпится выяснить со мной отношения - мы можем их продолжить выяснять в той самой ветке где вы публично продемострировали ваше полное незнание самых элементарных принципов компресии
Stanislav
Цитата(Relayer @ Apr 11 2008, 20:43) *
я это к эффекту Гиббса если вы не сразу соображаете
Полегче на поворотах, уважаемый.
Вероятно, для Вас будет открытием, что явление Гиббса присутствует в любом КИХ-фильтре, включая и тот, что Вы пытаетесь реализовать. wink.gif Однако, это не имеет отношения к теме, а мой вопрос заключается в следующем: отчего это Вы решили, что я буду предлагать Вам сделать к-ты АЧХ фильтра, равными только 0 и 1? Вот на него мне и хочется прочитать ответ.

Цитата(Relayer @ Apr 11 2008, 20:43) *
...хочу вам напомнить уважаемый вы наш всезнайка и писатель (интересно - найдется ли такая тема где вы не продемострировали свою эрудицию) - для личной переписки есть личные сообщения.
Успокойтесь, уважаемый. Свои предположения я высказал вовсе не Вам, а столь бурная реакция свидетельствует лишь о том, что они попали в точку. biggrin.gif

Цитата(Relayer @ Apr 11 2008, 20:43) *
впредь прошу вас воздержаться от писанины в этой теме. а особенно не по существу.
Тогда ещё вопрос: где Вы у меня видели "писанину", и что написанное в теме Вашим покорным слугой не правильно?

Форум открыт для общения; не Вам запрещать мне высказывать собственное мнение, которое я, к тому же, могу подкрепить строгим доказательством.
А вот Вам не мешало бы почитать собственные посты, и попытаться со стороны расшифровать, о чём же хотел поведать миру их автор?


Цитата(Relayer @ Apr 11 2008, 20:43) *
...если вам не терпится выяснить со мной отношения - мы можем их продолжить выяснять в той самой ветке где вы публично продемострировали ваше полное незнание самых элементарных принципов компресии
Это я-то? wink.gif
Обязательно продолжим. biggrin.gif
Fat Robot
Цитата(Relayer @ Apr 11 2008, 11:43) *
ну ... эээ ... как бы хотелось теории и вских вумных книжек на эту тему smile.gif с bandpass и bandstop это все получается. а вот low/high pass да в комплексной таким макаром уже не получится. в принципе оно и не особо нужно, но так сказать "для общего развития" не помешало бы smile.gif


В общем-то Вы правильно использовали одно из свойств (частотного сдвига) преобразования Фурье.

http://ru.wikipedia.org/wiki/%D0%9F%D1%80%....80.D1.8C.D0.B5

Умные книжки - любой учебник по функциональному анализу или по ЦОС (Рабинер-Голд, Оппенгейм-Шафер, отечественные авторы Гольденберг-Матюшкин и др.)

можно здесь посмотреть:
http://dsp-book.narod.ru/books.html


Успехов.
Stanislav
Цитата(Fat Robot @ Apr 13 2008, 22:56) *
В общем-то Вы правильно использовали одно из свойств (частотного сдвига) преобразования Фурье...
Ему бы ещё теорему о циклической свёртке изучить не мешало. smile.gif
Relayer
Цитата(Fat Robot @ Apr 13 2008, 21:56) *
В общем-то Вы правильно использовали одно из свойств (частотного сдвига) преобразования Фурье.


ну в этом то я не сомневался smile.gif

Цитата(Fat Robot @ Apr 13 2008, 21:56) *
Умные книжки - любой учебник по функциональному анализу или по ЦОС (Рабинер-Голд, Оппенгейм-Шафер, отечественные авторы Гольденберг-Матюшкин и др.)


к сожалению по большей части везде описывается dsp-обработка вещественных сигналов. а у меня комплексный - в этом то собственно и проблема.
Михаил_K
Цитата(Relayer @ Apr 11 2008, 20:43) *
я это к эффекту Гиббса если вы не сразу соображаете


Поясните плиз. Эффект Гиббса возникает при наглом усечении ИХ линейной системы. Какое отношение это имеет при фильтрации в частотной области, где просто зануляются ненужные частоты. У нас есть средства программной обработки сигналов, где выполняется фильтрация в частотной области, и значения АЧХ фильтров +1 и 0.
Relayer
Цитата(Михаил_K @ Apr 14 2008, 09:31) *
Поясните плиз. Эффект Гиббса возникает при наглом усечении ИХ линейной системы. Какое отношение это имеет при фильтрации в частотной области, где просто зануляются ненужные частоты. У нас есть средства программной обработки сигналов, где выполняется фильтрация в частотной области, и значения АЧХ фильтров +1 и 0.


дело в том что при наглом занулении фурье-коэф в частотной области и обратном преобразовании фурье получаются артефакты в сигнале. а т.к. этот сигнал в конечном счете переносится в звуковой спектр, то это все приходится слушать ушами. поэтому и такое сложное формирование ачх, а так же применение overlap&add.

странная дискуссия получается - я задал вопрос, по существу никто ничего не сказал, зато все спрашивают.
Stanislav
Цитата(Relayer @ Apr 14 2008, 12:04) *
странная дискуссия получается - я задал вопрос, по существу никто ничего не сказал, зато все спрашивают.
По существу всё уже сказано, уважаемый. Наберитесь терпения, и попробуйте вникнуть в суть написанного.

Цитата(Relayer @ Apr 14 2008, 12:04) *
дело в том что при наглом занулении фурье-коэф в частотной области и обратном преобразовании фурье получаются артефакты в сигнале.
А в Вашем КИХ-фильтре они что, не получаются? wink.gif
blackfin
Цитата(Relayer @ Apr 14 2008, 11:04) *
странная дискуссия получается - я задал вопрос, по существу никто ничего не сказал, зато все спрашивают.
А что свойтво линейности фильтров уже отменили?

Т.е., буквально, фильтруем отдельно действительную часть сигнала,
затем комплексную, складываем и получаем комплексный результат.

Фильтр FIR, ессно, один и тот же, что для Re, что для Im. 07.gif
Relayer
Stanislav, я не намерен отвечать на ваше пустословие в этой теме. вы не написали ничего по существу вопроса. общие фразы и только. вдобавок вы позволяете себе хамское поведение. если вам не понятно - я не собираюсь вступать с вами тут в бессмысленную перепалку. хотите говорить - говорите. до тех пор пока модератор не сочтет ваши разговоры раздуванием флейма

Цитата(blackfin @ Apr 14 2008, 11:14) *
Т.е., буквально, фильтруем отдельно действительную часть сигнала,
затем комплексную, складываем и получаем комплексный результат.
Фильтр FIR, ессно, один и тот же, что для Re, что для Im. 07.gif


это все применимо к симметричным относительно 0Hz фильтрам. и еще один момент - мне фильтровать надо именно в частотной области, без перехода во временную. дело в том что перед и после фильтрации присутствует еще некоторая обработка в частотной области, поэтому лишние "телодвижения" туда-сюда из частотной во временную и обратно скажутся на производительности системы.
blackfin
Цитата(Relayer @ Apr 14 2008, 11:24) *
это все применимо к симметричным относительно 0Hz фильтрам.
Здесь Вы, мягко говоря, ошибаетесь.. smile.gif
Сможете доказать, что у фильтров с несимметричной АЧХ отсутствуют линейность и стационарность.. ???
Цитата(Relayer @ Apr 14 2008, 11:24) *
и еще один момент - мне фильтровать надо именно в частотной области, без перехода во временную. дело в том что перед и после фильтрации присутствует еще некоторая обработка в частотной области, поэтому лишние "телодвижения" туда-сюда из частотной во временную и обратно скажутся на производительности системы.
Да я не навязывал Вам никакой конкретной реализации фильтра.
Просто хотел лишний раз напомнить о линейности операции фильтрации в её математическом смысле.. wink.gif
GetSmart
Цитата(blackfin)
Т.е., буквально, фильтруем отдельно действительную часть сигнала, затем комплексную, складываем и получаем комплексный результат.
По одной части сигнала кажется невозможно отличить частоты +F и -F (симметрия от 0) т.к. они совпадают с противоположной, сдвинутой на 180 град. Так что фильтр должен работать сразу с комплексным представлением. Либо предворительно сдвинуть спектр в части, подлежащей фильтрации.


Цитата(Relayer)
дело в том что при наглом занулении фурье-коэф в частотной области и обратном преобразовании фурье получаются артефакты в сигнале. а т.к. этот сигнал в конечном счете переносится в звуковой спектр, то это все приходится слушать ушами. поэтому и такое сложное формирование ачх, а так же применение overlap&add.
Из чистого любопытства, для чего понадобилась такая необычная (ИМХО) фильтрация?
fontp
Цитата(Relayer @ Apr 14 2008, 12:24) *
это все применимо к симметричным относительно 0Hz фильтрам. и еще один момент - мне фильтровать надо именно в частотной области, без перехода во временную. дело в том что перед и после фильтрации присутствует еще некоторая обработка в частотной области, поэтому лишние "телодвижения" туда-сюда из частотной во временную и обратно скажутся на производительности системы.


М-да уж... Если FIR имел действительный отклик во временной области, то симметричны, а так - нет :-)
Михаил_K
Не знаю, поможет или нет. Но мы для расчета комплексного фильтра (чтобы не было симметрии относительно 0) делали так.
1. Вычисляли обычный полосовой фильтр необходимой конфигурации в матлабе. При этом получался фильтр с действительными коэффициентами, который симметричен относительно 0.
2. Делали преобразование Гильберта над фильтром. При этом одна половинка исчезает. smile.gif .
Relayer
Цитата(GetSmart @ Apr 14 2008, 12:44) *
По одной части сигнала кажется невозможно отличить частоты +F и -F (симметрия от 0) т.к. они совпадают с противоположной, сдвинутой на 180 град. Так что фильтр должен работать сразу с комплексным представлением. Либо предворительно сдвинуть спектр в части, подлежащей фильтрации.


о чем я и говорил

Цитата(GetSmart @ Apr 14 2008, 12:44) *
Из чистого любопытства, для чего понадобилась такая необычная (ИМХО) фильтрация?


вот для этого: http://code.google.com/p/sdrlab

Цитата(Михаил_K @ Apr 14 2008, 13:24) *
Не знаю, поможет или нет. Но мы для расчета комплексного фильтра (чтобы не было симметрии относительно 0) делали так.
1. Вычисляли обычный полосовой фильтр необходимой конфигурации в матлабе. При этом получался фильтр с действительными коэффициентами, который симметричен относительно 0.
2. Делали преобразование Гильберта над фильтром. При этом одна половинка исчезает. smile.gif .


Михаил, спасибо. буду обязательно пробовать! за две страницы первый солюшн. насколько я понимаю такой методикой можно фильтр с вещественными коэфф отобразить только либо на положительные либо на отрицательные частоты. правильно?

PS 2 fontp и blackfin - господа, вы наверное не совсем поняли - я тут никому ничего доказывать не собираюсь. высшее математическое есть, но по цос у меня самообразование. и по работе я специализируюсь в областях далеких от электроники и цос. а ветку открыл именно с целью чтобы профессионалы не зубоскалили и выпендривались друг перед другом, а помогли реальным советом
Михаил_K
Цитата(Relayer @ Apr 14 2008, 16:51) *
насколько я понимаю такой методикой можно фильтр с вещественными коэфф отобразить только либо на положительные либо на отрицательные частоты. правильно?


Ну вроде как да.
В принципе можно делать и в лоб. Т.е. задаете требуемую АЧХ, делаете преобразование фурье комплексное, потом усекаете окном. Тут главное правильно задать наклон ФЧХ. Но это нужно делать ручками, матлаб к сожалению расчет комплексных фильтров не поддерживает.

У способа с преобразованием Гильберта есть недостаток - увеличения порядка фильтра на порядок преобразователя гильберта smile.gif . Мы синтезировали большие фильры с числом коэффициентов более 200, поэтому +- 14 коэффициентов было не так страшно. В вашем случае не знаю как это будет.
GetSmart
Relayer, попробуйте сделать такую АЧХ для частотных представлений (после FFT), которая будет фазозависима от фаз Re и Im. Отличить частоты +F и -F можно по разности фаз в Re и Im. Если разность 0..180 град, то частота положительная. Если 0..-180, то отрицательная (или наоборот smile.gif) Судя по описанию из SDR разность фаз будет в районе +90 и -90 град и их легко отличить.
Relayer
Цитата(Михаил_K @ Apr 14 2008, 16:21) *
Мы синтезировали большие фильры с числом коэффициентов более 200, поэтому +- 14 коэффициентов было не так страшно. В вашем случае не знаю как это будет.


у меня порядки 500 и выше. так что некритично
Stanislav
Цитата(Relayer @ Apr 14 2008, 12:24) *
Stanislav, я не намерен отвечать на ваше пустословие в этой теме. вы не написали ничего по существу вопроса. общие фразы и только. вдобавок вы позволяете себе хамское поведение. если вам не понятно - я не собираюсь вступать с вами тут в бессмысленную перепалку. хотите говорить - говорите. до тех пор пока модератор не сочтет ваши разговоры раздуванием флейма
Ошибаетесь, уважаемый.
Я дал здесь Вам целых два полезных совета по существу вопроса. Ваша нежелание/неспособность принять их к сведению нисколько не умаляет их сути, а Ваше реакция на добрые намерения напрочь отбивает всякую охоту помогать Вам хоть в чём-то впредь. sad.gif

Цитата(Relayer @ Apr 14 2008, 16:51) *
...и по работе я специализируюсь в областях далеких от электроники и цос...
Это заметно. Особенно в темах о компрессии сигнала.
GetSmart
Цитата(Stanislav)
Я дал здесь Вам целых два полезных совета по существу вопроса.
Перечитал снова. Не нашёл ни первого ни второго smile.gif Может носом ткнёте?

ЗЫ. Я не автор, но мне любопытно.
Stanislav
Цитата(GetSmart @ Apr 16 2008, 09:51) *
Перечитал снова. Не нашёл ни первого ни второго smile.gif Может носом ткнёте?
См. посты №4 и №14.
GetSmart
Пост №4
Цитата
Только зачем это Вам? Вы же фильтрацию в частотной области делаете, или я не понял чего-то? Для этого достаточно домножить результат комплексного ДПФ на вещественную функцию "АЧХ" фильтра, и сделать ОДПФ.

И что получим? Симметрию относительно 0. Где там польза для автора?

Пост №14
Цитата
Ему бы ещё теорему о циклической свёртке изучить не мешало. smile.gif
Свёртке чего (в данном контексте) с чем? Вы её знаете? И что же такое "полезное" эта теорема говорит?
Relayer
Цитата(GetSmart @ Apr 16 2008, 09:24) *
И что получим? Симметрию относительно 0. Где там польза для автора?


вобщем проблему более менее разрешил. точнее сказать убедился в том, что выбранный мной изначально метод - правильный и рабочий. ачх, точнее коэфф на которые надо домножать в частотной области у меня получились комплексные. вчера дописал код и вчерновую запустил - артефактов нет.
всетаки остановился на bandpass/stop. low/highpass тоже работает, но с некоторыми оговорками - об этом позже. итак у нас есть Flo, FHi. строим windowed-sinc filter. lowpass если требуется bandpass ачх и highpass - если bandstop. частота среза этого фильтра = (Fhi-Flo)/2. получаем вещественные коэфф фильтра. их N/2 штук, при этом FFT работает с окном размером N. старшую половину блока зануляем. причина связана с тем что используется техника overlap&add. теперь генерируем комплексную экспоненту с частотой (Flo+Fhi)/2 и поэлементно домножаем (комплексно) на нее сгенерированные коэфф фильтра. от полученного комплексного массива выполняем прямое FFT и получаем коэфф на которые будет домножаться (комплексно) сигнал в частотной области.
теперь касательно low/highpass в комплексной плоскости. их тоже можно сгенерировать таким образом. к примеру если нам необходим lowpass с частотой среза Flo можно сгенерировать по рассмотренной выше методике bandpass c полосой -Fs/2..Flo. но вылезла мелкая бяка - на результирующей ачх есть небольшой пик в районе F/s (хотя там должно быть подавление). мое предположение - это происходит из за свойств цикличности.
Stanislav
Цитата(GetSmart @ Apr 16 2008, 10:24) *
Свёртке чего (в данном контексте) с чем? Вы её знаете? И что же такое "полезное" эта теорема говорит?
Вообще-то, я хотел упомянуть о "теореме запаздывания", но уж больно автор темы, гм... того. smile.gif Теорема о свёртке же говорит о том, как надо фильтровать сигнал в частотной области.

Цитата(GetSmart @ Apr 16 2008, 10:24) *
Пост №4
И что получим? Симметрию относительно 0. Где там польза для автора?
А Вы условие прочитайте, и скажите, что у меня неправильно.
Или, лучше, свою тему создайте - сюда я больше не писец. smile.gif
Relayer
Цитата(Stanislav @ Apr 16 2008, 10:15) *
сюда я больше не писец. smile.gif


вот именно - наиспражнялись вы здесь вволю. ну да ладно - вас ждет тема по lossless audio compression. тема TTA-кодека вами совсем не раскрыта. пора бы с ней покончить - за три дня что вы отмалчиваетесь вполне можно было разобраться в алгоритме. или вы язык ЦЭ в школе не проходили? smile.gif
GetSmart
Relayer, я в терминах немного не бум-бум. У фильтра (bandpass/stop) получилась крутизна с обоих сторон одинаковая, а симметрия вместо нуля сдвинута на другую частоту?

Преобразование Гильберта не помогло што ли? Мне вот интересно, если восстановить Im часть коэффициентов фильтра по Re части, потом ещё умножить на комплексную экспоненту (или на что другое), то можно убрать из фильтрации скажем все отрицательные частоты?
Relayer
Цитата(GetSmart @ Apr 17 2008, 15:28) *
Relayer, я в терминах немного не бум-бум. У фильтра (bandpass/stop) получилась крутизна с обоих сторон одинаковая, а симметрия вместо нуля сдвинута на другую частоту?
Преобразование Гильберта не помогло што ли? Мне вот интересно, если восстановить Im часть коэффициентов фильтра по Re части, потом ещё умножить на комплексную экспоненту (или на что другое), то можно убрать из фильтрации скажем все отрицательные частоты?


вот как выглядит ачх - на входе белый шум (комплексный)
bandpass 3-6kHz:
Нажмите для просмотра прикрепленного файла
bandstop 3-6kHz:
Нажмите для просмотра прикрепленного файла
lowpass 3kHz с теми артефактами справа о которых я писал ранее
Нажмите для просмотра прикрепленного файла

крутизна по бокам одинаковая. с гильбертом что-то у меня не пошло. толи не то крутил, толи не туда smile.gif
GetSmart
Если последний рисунок "свернуть в трубочку", то вполне идеальный фильтр без артефактов. ИМХО единственный способ сделать идеальный low/highpass фильтр в положительных и отрицательных частотах - это "условная" свёртка, о которой я писал раньше.
Relayer
Цитата(GetSmart @ Apr 17 2008, 18:21) *
Если последний рисунок "свернуть в трубочку", то вполне идеальный фильтр без артефактов.


естественно. артефакт это левый скат ачх который "завернулся" вправо. в зависимости от выбора окна будет более или менее выражен.

Цитата(GetSmart @ Apr 17 2008, 18:21) *
ИМХО единственный способ сделать идеальный low/highpass фильтр в положительных и отрицательных частотах - это "условная" свёртка, о которой я писал раньше.


гм ... давайте подробнее об этом. "теоретики" поразбежались - есть шанс разобраться в этом вопросе smile.gif
GetSmart
Тока сначала мне надо понять что имеется на входе. Как я где-то по ссылке прочитал - это комплексное представление ПЧ радиотракта. Непонятно только чем отфильтрованное и какой с полосой. Если в этой полосе будут только частоты -Fs/2..0..Fs/2, то без проблем на выход пропускать все отрицательные, а положительные фильтровать через FIR. Или наоборот (в любых комбинациях).

Хотя принципиальной выгоды в этом может и не быть. Т.к. в комплексном представлении при оцифровке все частоты в входном сигнале как бы сворачиваются "в трубочку" и вылезают в полосе -Fs/2..0..Fs/2. Например -Fs/2 - 1Hz вылезет в полосе Fs/2 - 1 Hz. ИМХО чтобы таких артефактов не было с "реальными" неидеальными аналоговыми фильтрами перед АЦП наверно нужно оцифровывать полосу сигнала заметно шире, а потом использовать только часть (серединку).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.