реклама на сайте
подробности

 
 
> Цифровой фильтр
ASV
сообщение Dec 8 2005, 20:08
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 43
Регистрация: 28-01-05
Пользователь №: 2 279



На сколько мне известно порядок фильтра характеризует коэффициент затухания. В цифровых фильтрах, как я убедился он то же влияет на коэффициент затухания. А зависит ли Порядок фильтра от количества выборок? Могу ли я поступить следующим образом:
- есть сигнал 100Гц;
- я оцифровую его с частотой 1000Гц;
- получаеться десять выборок;
- фильтр 8-го порядка;
Вопрос: имею ли я право пропустить через фильтр все 10 отсчетов? И что получиться. Фильтр НЧ с КИХ.
Может это все глупо, но я столкнулся с цифровыми фильтрами первый раз.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
skopus
сообщение Jan 24 2006, 15:08
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



фильтр на 316гц по идее должен пропускать частоту 316, не усиливая и не подавляя. А этот результат я объяснить никак не могу.
Филтр реализуется такой вот функцией на языке Си++ в IAR C для Atmel AVR (3 версия)

// 1. Вычисление результата в рекурсивной ветви звена:
// D10 = Uadc + D11*a11 + D12*a12

void MyChannelClass::FilterOne(MyChannelClass *pntr)
{
//формат коэффициентов 4.12
//формат переменных фильтров 8.8
pntr->D10 = pntr->ADC_buffer;
//ывделяем из формата 12.20 число в формате 8.8
pntr->D10 = pntr->D10 + int( fmuls16x16_32( pntr->D11, pntr->a11)>>12 );
pntr->D10 = pntr->D10 + int( fmuls16x16_32( pntr->D12, pntr->a12)>>12 );
pntr->D12 = pntr->D11;
pntr->D11 = pntr->D10;
}

далее выполняется

// 2. Детектирование и сглаживание сигнала (амплитудное детектирование
// Цикл выборки НЧ в 16 раз больше периода квантования
// Uad1 = 4*b10*abs(D10)
(умножение на 4 из-за сдвига на 2 разряда влево, чтобы убрать знак, хранящийся в старших разрядах 2байтной переменной D10 - это было в предыдущей программе для другого МК)
Сейчас это написано на Си так.

pntr->Uad1 = SignedToUnsigned(pntr->D10);
pntr->Uad1 = int( fmuls16x16_32( pntr->Uad1, pntr->b10)>>12 ); //8.8 x 4.12 = 12.20 -> 8.8
pntr->Uad1 = (pntr->Uad1)*4;

функция fmuls16x16_32 реализует умножение двухбайтных чисел и дает 4 байтный результат (арифметика с фиксированной точкой)

для фильтра на 430гц
1.584584 /* section 1 A1 */
-0.987981 /* section 1 A2 */
0.006009 /* section 1 B0 */
-0.006009 /*section 1 B2 */
здесь имеется ввиду уравнение
x[t] +a1*x[t-1] + a2*x[t-2] = b0*y[t] +b2*y[t-2]
на практике остается только левая часть, а правая выносится как бы за сумматор (простите, что без картинки - если надо, сделаю).

Используемый коэффициент b0=0.3308.
Это значение было подобрано так, чтобы все работало. И оно действительно работает в предыдущей версии устройства (его делал не я, и программу тоже не я писал, но сомнений в том, что это так не возникает). Подбирался он из следующих соображений : результат не должен был переполнять разрядную сетку. А если вынести коэффициенты b0 и b2 за сумматор, то значение фильтра будет равно абсолютному значению рекурсивной ветви звена.

я заподозрил что что-то не так, когда увидел что среднее значение после детектирования подчиняется закономерности, которую я описывал выше, и от этого предположения перешел к предыдущему шагу, о чем здесь и спрашиваю.



забыл сказать что речь идет о рекурсивном фильтре с бесконечной импульсной характеристикой (IIR). Рачет выполняет в старой проге методом Bilinear Transformation , работающей под DOS. Ее результат сомнений не вызывает
Go to the top of the page
 
+Quote Post
Johny
сообщение Jan 25 2006, 16:25
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 140
Регистрация: 18-10-05
Пользователь №: 9 792



Цитата(skopus @ Jan 24 2006, 18:08) *
для фильтра на 430гц
1.584584 /* section 1 A1 */
-0.987981 /* section 1 A2 */
0.006009 /* section 1 B0 */
-0.006009 /*section 1 B2 */
здесь имеется ввиду уравнение
x[t] +a1*x[t-1] + a2*x[t-2] = b0*y[t] +b2*y[t-2]
на практике остается только левая часть, а правая выносится как бы за сумматор (простите, что без картинки - если надо, сделаю).

Используемый коэффициент b0=0.3308.
Это значение было подобрано так, чтобы все работало. И оно действительно работает в предыдущей версии устройства (его делал не я, и программу тоже не я писал, но сомнений в том, что это так не возникает). Подбирался он из следующих соображений : результат не должен был переполнять разрядную сетку. А если вынести коэффициенты b0 и b2 за сумматор, то значение фильтра будет равно абсолютному значению рекурсивной ветви звена.

я заподозрил что что-то не так, когда увидел что среднее значение после детектирования подчиняется закономерности, которую я описывал выше, и от этого предположения перешел к предыдущему шагу, о чем здесь и спрашиваю.


Полагаю, что х - это входной сигнал, а у - выходной.

Из написанного уравнения следует: y[t]=(x[t]+a1*x[t-1]+a2*x[t-2]-b2*y[t-2])/b0

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

Есть большое подозрение, что запись исходного уравнения (для приведенных выше коэффициентов) неверна. Оно должно выглядеть так:

y[t] +a1*y[t-1] + a2*y[t-2] = b0*x[t] +b2*x[t-2]

а конечная рассчетная формула фильтра:

y[t] = b0*x[t]+b2*x[t-2]-a1*y[t-1]-a2*y[t-2]
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ASV   Цифровой фильтр   Dec 8 2005, 20:08
- - mse   Не всё так просто. ЦФ бывают, как минимум, FIR и I...   Dec 8 2005, 21:47
- - Tiro   ASV По английски читаешь? Посмотри здесь, наприме...   Dec 8 2005, 22:12
- - Dr.NoA   Цитата(ASV @ Dec 8 2005, 23:08) Вопрос: и...   Dec 9 2005, 09:22
- - mse   ЦитатаКак раз все 10 отсчетов и надо пропускать че...   Dec 9 2005, 19:58
- - GrayCat   Цитата(ASV @ Dec 8 2005, 22:08) На скольк...   Dec 12 2005, 08:58
- - aal   В http://vlab.netsys.ru/forum/showthread.php?t=388...   Dec 15 2005, 12:28
- - nano   Крик о помощи Начальные условия : топик прочел...   Dec 15 2005, 16:41
|- - ASV   У меня задача следующая. Мне нужно померить напряж...   Dec 20 2005, 21:19
- - mse   Цитатаи умеет быстро умножать только 8bit Ну не ст...   Dec 20 2005, 21:43
|- - ASV   Цитата(mse @ Dec 21 2005, 01:43) Цитата и...   Dec 20 2005, 21:48
- - mse   Цитатаа не в строчку как это делают DSPIC-и. Хех. ...   Dec 20 2005, 21:54
|- - ASV   Цитата(mse @ Dec 21 2005, 01:54) Цитатаа ...   Dec 21 2005, 22:46
- - urasinov   nano В MATLAB в DSP Blockset имеется Filter Realiz...   Dec 22 2005, 07:17
- - Sokol   Цитата(nano @ Dec 15 2005, 19:41) Крик о ...   Dec 22 2005, 12:34
- - skopus   Уважаемые, скажите пожалуйста насколько сильно мож...   Jan 23 2006, 16:52
|- - BVU   Цитата(skopus @ Jan 23 2006, 19:52) Уважа...   Jan 25 2006, 08:06
- - Dr.NoA   Я правильно понял проблему? Вы подаете синус с амл...   Jan 23 2006, 20:54
- - skopus   нет. Вы не совсем правильно поняли. Фильтры не сое...   Jan 24 2006, 05:02
- - skopus   поисследовал ситуацию поподробнее и обнаружил, что...   Jan 24 2006, 08:59
- - Dr.NoA   Какие-то странные графики. Почему, например, для ф...   Jan 24 2006, 10:54
- - Dr.NoA   Я бы все таки проверил характеристики фильтра в Ma...   Jan 24 2006, 19:54
- - skopus   я уже неоднократно проверял. И в матлабе, и в про...   Jan 25 2006, 07:06
- - skopus   я не говорил что у меня НЧ фильтры. У меня узкопол...   Jan 25 2006, 08:34
- - BVU   Для выяснения причин данной проблемы нужно подать ...   Jan 25 2006, 10:20
|- - skopus   Цитата(BVU @ Jan 25 2006, 13:20) Для выяс...   Jan 25 2006, 14:54
|- - BVU   Цитата(skopus @ Jan 25 2006, 17:54) Цитат...   Jan 25 2006, 15:46
||- - Stanislav   Цитата(BVU @ Jan 25 2006, 18:46) ...Судя ...   Jan 25 2006, 16:05
|- - Johny   Цитата(skopus @ Jan 25 2006, 17:54) http:...   Jan 25 2006, 16:56
- - michael34   Вряд ли ты прав... Хотя точно сказать не могу...   Jan 25 2006, 11:11
|- - BVU   Цитата(michael34 @ Jan 25 2006, 14:11) Вр...   Jan 25 2006, 13:34
- - Johny   Еще раз о коэффициентах фильтра. Если рассчитанны...   Jan 26 2006, 07:52
|- - Johny   Цитата(Johny @ Jan 26 2006, 10:52) Надо е...   Jan 26 2006, 08:34
- - Dr.NoA   Как я понял, при расчете в таком виде Цитата// 1. ...   Jan 26 2006, 08:44
- - skopus   Спасибо за совет. Но удивительное в том, что перво...   Jan 26 2006, 11:17
- - Dr.NoA   Наоборот, при такой записи уравнения Цитатаx[kT]+a...   Jan 26 2006, 13:12
- - skopus   так в том-то и дело что этих b0 и b2 в уравнениях ...   Jan 26 2006, 14:26
- - Dr.NoA   Цитата(skopus @ Jan 26 2006, 17:26) так в...   Jan 26 2006, 16:14


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 08:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01434 секунд с 7
ELECTRONIX ©2004-2016