|
Цифровые фильтры, помогите разобраться |
|
|
|
Nov 10 2010, 13:33
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Все вроде понятно по фильтрам. Задаешь частоты расчитываешь коэффициенты. Поэтому вопросы у меня как обычно чисто практические...
x(n)=входной массив выборок АЦП (n=0…1023) y(n)=выходной массив
стандартная формула Баттерворта на которую натыкаешься всюду:
y(n)=( a0*x(n)+a1*x(n-1)+a2*x(n-2) - (b1*y(n)+b2*y(n-1)) )
так вот не могу понять как при начальном значении первого(нулевого) значения выборки по адресу x(0) может быть a1*x(n-1) запрашивается значение из массива x(0-1) этот же выход из диапазона массива? Массив от 0 до 1023 –> 1024 выборки сделал значения по порядку:
y(n)=( a0*x(n)+a1*x(n+1)+a2*x(n+2) - (b1*y(n)+b2*y(n+1)) )
все заработало для ФВЧ, а для ПФ не работает толи коэффициенты не правильно подставляю, толи формула другая для ПФ там просто коэффициентов больше 5 вроде поэтому делаю так
y(n)=( a0*x(n)+a1*x(n+1)+a2*x(n+2)+ a3*x(n+3)+ a4*x(n+4) - (b1*y(n)+b2*y(n-1)+ b3*y(n+2)+b3*y(n+3)))
видел и такую формулу где-то:
y(n)=( a0*x(n)+2*a1*x(n-1)+a2*x(n-2) - (b1*y(n)+b2*y(n-1)) )
В общем полная каша в голове, может для Чебышева иначе делается, подскажите плиз…
Сообщение отредактировал TViT - Nov 10 2010, 13:34
|
|
|
|
|
Nov 10 2010, 19:53
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Джеймс Да вобщем и у меня так там последовательно складываются входные значения умноженные на коэффициенты еще подробней посмотрю расчитал в ciirf1 получается для 2-го порядка - 5 коэфф. а0,а1,а2 и в1,в2 в Матлабе всего 3 выкинул обратную связь чтоб только 3-мя коэфф. пользоваться все равно работает: Y(n) = (a(0) * X(n) + a(1) * X(n + 1) + a(2) * X(n + 2)) Вот сравниваю тут коэффициенты может нужно для ПФ разделить коэффициенты, первую половину получится как через НЧ фильтр прошел сигнал, потом его переписать во входной массив X(n) и пропустить через вторую половину коэффициентов как бы через ФВЧ получится ПФ.
Сообщение отредактировал TViT - Nov 10 2010, 19:54
|
|
|
|
|
Nov 11 2010, 02:11
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
Цитата(TViT @ Nov 10 2010, 15:33)  так вот не могу понять как при начальном значении первого(нулевого) значения выборки по адресу x(0) может быть a1*x(n-1) запрашивается значение из массива x(0-1) этот же выход из диапазона массива? Это просто показывает, что в фильтре используются предыдущие отсчеты... И разумеется в первые моменты времени там ничего нет ("0"). Надеюсь Вас не удивит, что это одна из форм т.н. "переходных процессов". Написать грамотно такой фильтр не тяжело, нужно только сеть и немного подумать. Цитата(TViT @ Nov 10 2010, 15:33)  все заработало для ФВЧ, а для ПФ не работает толи коэффициенты не правильно подставляю, толи формула другая для ПФ ...формула та же, но там возможно несколько вариантов этих формул (для IIR) и все они правильные. Цитата(TViT @ Nov 10 2010, 21:53)  Вот сравниваю тут коэффициенты может нужно для ПФ разделить коэффициенты, первую половину получится как через НЧ фильтр прошел сигнал, потом его переписать во входной массив X(n) и пропустить через вторую половину коэффициентов как бы через ФВЧ получится ПФ.  ...буду краток - нет. У Вас какая-то путаница с пониманием форм построения фильтра FIR-IIR и форм АЧХ(ФНЧ,ФВЧ,полосовой и т.д.)
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Nov 11 2010, 08:05
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
...Понимаю что гдето моя ошибка... Продумаю по внимательнее алгоритм по шагам...
Сообщение отредактировал TViT - Nov 11 2010, 08:06
|
|
|
|
|
Nov 11 2010, 10:45
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Все разобрался просто игнорирую ошибку выход из диапазона массива в цикле перемножения и сложения выборок и тогда все отлично работает Всем за участие спасибо!
|
|
|
|
Guest_TSerg_*
|
Nov 11 2010, 11:39
|
Guests

|
Занятное решение.
|
|
|
|
|
Nov 12 2010, 07:34
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
TSerg Это если быстро сказать. На самом деле привел все к соответствию формулы, взял алгоритм из DSPlib AVR32 переписал на VB, а так как там через указатели, то я просто применил возможность игнорировать ошибки на VB результаты абсолютно одинаковые что на МК передаю массив и результат обратно что через VB на компе можно конечто через смещение сделать как в примере от Джеймс.
DSPlib коэффициенты через Scilab расчитываются поэтому с этим разбираюсь от Матлаба не подходят, толи что-то не так делаю. Только из ciirf1 подходят коэффициенты.... Вот такие пироги.
Сообщение отредактировал TViT - Nov 12 2010, 07:37
|
|
|
|
Guest_TSerg_*
|
Nov 13 2010, 08:20
|
Guests

|
Я - пас. Мой мозг отказался перевести сообщение №8 в семантически значимую для меня форму.
|
|
|
|
|
Nov 13 2010, 08:24
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016

|
Вам язык почесать негде? Или я что-то грубое сказал???
|
|
|
|
|
Nov 14 2010, 06:02
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
Цитата(bahurin @ Nov 13 2010, 13:36)  бегите еще быстрее ... в сторону matlab ...а еще никаДДа не используйте GCC... Ведь всем известно, что настоящие гуру от DSP используют исключительно кошерные решения - в виде готовых примеров поставляемых с IDE Цитата(bahurin @ Nov 13 2010, 13:36)  GNU Octave. ...это жалкая пародия как на матлаб так и на скайлаб... Цитата(bahurin @ Nov 13 2010, 13:36)  Что касается dsp - matlab можно считать эталоном. да-да... Как дэлфи-кодер - эталоном программиста... P.S.: по-ходу у аФФтАра глючит исходник, а мы тут "холиварим"...
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Nov 14 2010, 06:31
|

Местный
  
Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347

|
Цитата(DRUID3 @ Nov 14 2010, 09:02)  ...а еще никаДДа не используйте GCC... Ведь всем известно, что настоящие гуру от DSP используют исключительно кошерные решения - в виде готовых примеров поставляемых с IDE  GCC вполне приличный компилятор. Вот именно желание использовать готовые решения и приводит к тому что фильтр считаются в сайлабе а потом переносятся на вижуал бэйск. Аш муражки пробивают. Цитата(DRUID3 @ Nov 14 2010, 09:02)  ...это жалкая пародия как на матлаб так и на скайлаб... Неправда GNU Octave практически полный аналог матлаба, совершенно бесплатный, с великим множенством тулбоксов. Оданко вы не найдете тормозных симулинков в октаве и красивого интерфейса, но что касается функций и их использования, то пожалуй октава ничем не хуже матлаба. Цитата(DRUID3 @ Nov 14 2010, 09:02)  да-да... Как дэлфи-кодер - эталоном программиста... Сдается мне, что вы, батенька, троль  Результатам расчетов в матлабе я доверяю, ибо им пользуются миллионы. чего не скажешь о скайлабе.
|
|
|
|
|
Nov 14 2010, 07:17
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
Цитата(bahurin @ Nov 14 2010, 08:31)  Неправда GNU Octave практически полный аналог матлаба, совершенно бесплатный, с великим множенством тулбоксов. Оданко вы не найдете тормозных симулинков в октаве и красивого интерфейса, но что касается функций и их использования, то пожалуй октава ничем не хуже матлаба. ...нет, там функций много меньше... И еще вопрос - что лучше отсутствие функций вообще или наличие аналогов, но немного с другими параметрами или потребность разбиения одной функции на несколько... Цитата(bahurin @ Nov 14 2010, 08:31)  Сдается мне, что вы, батенька, троль  Результатам расчетов в матлабе я доверяю, ибо им пользуются миллионы. чего не скажешь о скайлабе. Вы правы - я троль... но вернемся к вопросу. Миллиарды... Им пользуются миллиарды... В столице Украины при десятках тысяч работающих программистов хорошо если есть сотня активно юзающих математические пакеты. Кстати массы добровольных тестировщиков не всегда есть критерий безошибочности. Ошибку в quickSort во FreeBSD подправили пару лет назад - а если историю жизни проекта умножить на количество пользователей как раз и получатся трилиарды гуманоидов в мирриадах звездных систем  . Скайлаб в эпоху своей молодости тоже был коммерческим продуктом с радиотехническим уклоном! Для математики он юзает известные вычислительные библиотеки которыми пользуются все и далеко не только в этом проекте. Вряд ли у него есть ошибки в вычислительном ядре. Кстати, никто и нигде не дает гарантий что их нет в Матлаба  . Еще с помощью Скайлаба очень удобно тестировать свои DSP исходники(вычислительную часть) не знаю как с этим в "матлабе"... Давайте говорить честно - матлаб это модно. Столько функций, а главное дофига всего в книгах и интернете - почти не надо думать. Токо копируй и в консоль, или как там оно зовеЦЦо у него, вставляй...
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|