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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> GAIN рекурсивного НЧ, синтезированного FDAtool MATLAB, почему GAIN отличается от расчетного
Sekat
сообщение Dec 14 2013, 10:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Синтезирую простейший фильтр НЧ второго порядка по Баттерворту. Fs=2000, Fc=0,01. Естественно, что деноменаторные коэффициенты получаются с 4 девятками, а так же фильтр оказывается с высоким коэфф. усиления. Матлаб расчитывает требуемый GAIN как 2.5E-10. Однако работающий фильтр (float) имеет усиление в 60 раз меньше.
Схема эксперимента матлабе. На модель фильтра (самописную, а не встроенную функцию) подаю единичную ступеньку. Через большое число циклов виду устоявшийся уровень 0.0166.
Где собака порылась?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Dec 16 2013, 06:27
Сообщение #2





Guests






В чем смысл такого большого отношения частот дискретизации и среза?
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Dec 16 2013, 13:06
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(Sekat @ Dec 14 2013, 13:13) *
Где собака порылась?


Думаю виноват кривой FDAtool. Тоже пытался уменьшить усиления в секциях - безрезультатно.
Если увеличиваешь количество секций - тупо увеличивает подавление.
Если начинаешь ручками крутить нули/полюса - порядок GAIN становится зеркален порядку коэффициентов.
Как-то не хочется доверять результатом такой глючной тулзы.
Go to the top of the page
 
+Quote Post
Sekat
сообщение Dec 16 2013, 13:07
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Цитата(TSerg @ Dec 16 2013, 10:27) *
В чем смысл такого большого отношения частот дискретизации и среза?


Выделение постоянной составляющей на фоне большого уровня сигнала переменной частоты.

А по существу?
Ну просто интересно. Уже вставил в проект, пересчитав фильтр с несколько иными параметрами,
Fc=0,01, Fs=300. Gain, выданный FDA, не соответствовал реальному в 0.56 раз.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Dec 16 2013, 13:39
Сообщение #5





Guests






Цитата(Sekat @ Dec 16 2013, 17:07) *
Выделение постоянной составляющей на фоне большого уровня сигнала переменной частоты.

А по существу?
Ну просто интересно. Уже вставил в проект, пересчитав фильтр с несколько иными параметрами,
Fc=0,01, Fs=300. Gain, выданный FDA, не соответствовал реальному в 0.56 раз.


По существу - не надо верить в чудеса математики, если заведомо выходите за пределы точности.
Поставьте, к примеру, Fs=1 Гц и все получится.
Поэтому еще раз спрашиваю - зачем такое большое отношение Fs/Fc?
Go to the top of the page
 
+Quote Post
Sekat
сообщение Dec 16 2013, 15:46
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Цитата(TSerg @ Dec 16 2013, 17:39) *
По существу - не надо верить в чудеса математики, если заведомо выходите за пределы точности.
Поставьте, к примеру, Fs=1 Гц и все получится.
Поэтому еще раз спрашиваю - зачем такое большое отношение Fs/Fc?

А откуда известно, что IIR с такими параметрами заведомо выходит за пределы точности?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Dec 16 2013, 17:08
Сообщение #7





Guests






Вы что-то слышали про вычитание близких чисел? sm.gif

Или вот еще пример опасной редукции:

float a, b, c;
a=123456789;
b=123456788;
c=a-b;

Что мы должны получить? Конечно же 1.
Но,
printf("Result: %f\n", f);
дает ответ: 8.

Неплохо, да?
Т.е. при наличии относительной погрешности представления исходных данных около 3E-8, мы получили относительную погрешность результата более чем в 2E+8 раз больше sm.gif
Go to the top of the page
 
+Quote Post
Sekat
сообщение Dec 16 2013, 17:21
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Цитата(TSerg @ Dec 16 2013, 21:08) *
Вы что-то слышали про вычитание близких чисел? sm.gif

Или вот еще пример опасной редукции:
...

Это понятно. Но..
В моем примере из 7 мантисных чисел действующих не менее 3х!.
Много это или мало? Сам же FDA tool имеет замечательные инструменты для ответа на такие вопросы. Как для INT, так и для FLOAT.

Да и бог с ним с гейном. неправильно считает - не проблема скорректировать ручками. Проблема в том что "Маленькая ложь рождает большое недоверие".
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Dec 16 2013, 17:48
Сообщение #9





Guests






Цитата(Sekat @ Dec 16 2013, 21:21) *
Это понятно. Но..
В моем примере из 7 мантисных чисел действующих не менее 3х!.
Много это или мало? Сам же FDA tool имеет замечательные инструменты для ответа на такие вопросы. Как для INT, так и для FLOAT.

Да и бог с ним с гейном. неправильно считает - не проблема скорректировать ручками. Проблема в том что "Маленькая ложь рождает большое недоверие".


Вы так и не поняли, что отношение частот 20E4, что Вы приняли для расчета, выходит далеко за рамки разумного ( читай любой разрядной сетки любого моделирующего инструмента, если только нет возможности использования "длинной" арифметики )

Для примера, как ведет себя ФНЧ Баттерворта 2 порядка Fc=0.01 при разных Fs ( аналог; цифровой: 1; 10; 300 Гц) при точности double.

Аналоговый
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 67%
Прикрепленное изображение
523 x 590 (10.24 килобайт)


Цифровой Fs=1 Hz
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 67%
Прикрепленное изображение
521 x 588 (10.8 килобайт)


Цифровой Fs=10 Hz
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 67%
Прикрепленное изображение
525 x 586 (10.63 килобайт)


Цифровой Fs=300 Hz
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 67%
Прикрепленное изображение
521 x 587 (10.59 килобайт)


Как видим, начиная с 10 Гц, уже пошли проблемы с точностью в переходных режимах, хотя Gain=1

А теперь синтезируем фильтр через Filter Solution ( Fs = 1 Hz) и, не долго думая, оставим 5 значащих дес. цифр:

 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 65%
Прикрепленное изображение
493 x 97 (3.75 килобайт)


 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 67%
Прикрепленное изображение
516 x 590 (10.05 килобайт)


Вот у нас Gain и поплыл и это при абсолютно здравой Fs=1 Hz и в расчетной сетке 64 бита ( double ).
А если бы взяли 100; 300; 2000 Hz ? sm.gif
Go to the top of the page
 
+Quote Post
Sekat
сообщение Dec 17 2013, 03:17
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 13-02-12
Пользователь №: 70 242



Цитата(TSerg @ Dec 16 2013, 21:48) *
Вы так и не поняли, что отношение частот 20E4, что Вы приняли для расчета, выходит далеко за рамки разумного ( читай любой разрядной сетки любого моделирующего инструмента, если только нет возможности использования "длинной" арифметики )

Вот, аналогичная вашему 4-му рисунку, переходная характеристика из FDA Tool (Fc=0.01, Fs=300).
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 82%
Прикрепленное изображение
927 x 591 (96.59 килобайт)


Использование С и float в реальном проекте с расчетными коэффициентами дает похожие результаты. Никаких "ступенек" не наблюдается. Мы говорим об одном и том же?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Dec 17 2013, 07:07
Сообщение #11





Guests






Это я сам себя перехитрил - вводил Fs как Ts и при этом удивлялся - во как бываетsm.gif
Так, что "ступеньки" - это дискретизация по времени, а не по амплитуде.

Но мое недоумение выбором столь высокого отношения частот остается.

С типом double при Fs=2000 все нормально, а на single фильтр разваливается.
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 72%
Прикрепленное изображение
601 x 489 (56.29 килобайт)
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 71%
Прикрепленное изображение
596 x 485 (60.49 килобайт)
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Dec 17 2013, 08:57
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(TSerg @ Dec 17 2013, 10:07) *
Но мое недоумение выбором столь высокого отношения частот остается.


Например при фильтрации сигнала с выхода дельта-сигма 3-4 порядка приходится делать фильтры 1:200 и подавлением сотни Дб на октаву.

Цитата(TSerg @ Dec 17 2013, 10:07) *
С типом double при Fs=2000 все нормально, а на single фильтр разваливается.


Даже если выполнить фильтры FDA в целочисленной математике - результат усиления сойдётся с double.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Dec 17 2013, 11:08
Сообщение #13





Guests






Цитата(_4afc_ @ Dec 17 2013, 12:57) *
Например при фильтрации сигнала с выхода дельта-сигма 3-4 порядка приходится делать фильтры 1:200 и подавлением сотни Дб на октаву.


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

Цитата(_4afc_ @ Dec 17 2013, 12:57) *
Даже если выполнить фильтры FDA в целочисленной математике - результат усиления сойдётся с double.


Даже на 8-битной платформе? sm.gif
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Dec 17 2013, 11:36
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(TSerg @ Dec 17 2013, 14:08) *
Даже на 8-битной платформе? sm.gif


Я о другом. Проблема не в том, что фильтр работает в плавающей точке.
Даже если заменить плавающую точку на фиксированную - ошибка сохранится.
Т.е. это матлаб дурит рассчитывая коэффициенты и усиление.

Что до битности - то 32бита мне хватало при 64битном аккумуляторе.
И эти параметры можно было бы снизить ещё, если бы была возможность уменьшить усиление в секции.
Go to the top of the page
 
+Quote Post
thermit
сообщение Dec 17 2013, 12:09
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Честно говоря, не понял проблемы. Квантование к-тов 23-мя битами приводит к полюсу на единичной окружности. Тупое усечение мантиссы приводит к к-ту передачи фильтра 1/60. В обоих случаях ачх разваливается. На фоне такого безобразия вопрос о разрядности аккумулятора даже не стоит. Вывод: Данный фильтр в формате float не может быть реализован. Чо тут обсуждать-то?

Цитата
TSerg:
Даже на 8-битной платформе?


Да хоть на 2-битной. Реализовать можно любую точность.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 4th July 2025 - 04:15
Рейтинг@Mail.ru


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