PlainUser 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Чем отфильтровать среднеквадратичное для индикации измеряемого напряжения в рмс вольтметре. Измеряем 50гц. Рубим выборки 8кгц непрерывно. Убираем постоянную составляющую фильтром фвч. Перемножаем , получаем квадраты. Идет последовательность квадратов 8кгц. Из них нужно непрерывно выделять постоянную составляющую цифровым фильтром. Каким? Пробовал бесселя 4п со срезом 5Гц и семплами 8кгц , фигня какая-то выходит. Возможно частоты далеко друг от друга. Подсчет суммы квадратов за 1сек дает замечательный результат с точностью даже выше чем надо несмотря на так-сказать прямоугольное окно , но нет непрерывности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 14 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Измеряем 50гц. Подсчет суммы квадратов за 1сек дает замечательный результат с точностью даже выше чем надо несмотря на так-сказать прямоугольное окно, но нет непрерывности. Подсчет суммы квадратов за 1сек будет работать, если на интервале 1 сек укладывается целое число периодов "квадратов". Если частота на входе 50,25 Гц, то частота "квадратов" будет равна 100,5 Гц и на интервале 1 сек поместится 100,5 периодов, что даст ошибку при подсчете суммы равную сумме значений "квадратов" за пол периода. Если, конечно, я правильно понял смысл выражения "нет непрерывности". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Подсчет суммы квадратов за 1сек дает замечательный результат с точностью даже выше чем надо несмотря на так-сказать прямоугольное окно , но нет непрерывности. Сделайте скользящее окно по принципу MAF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PlainUser 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Сделайте скользящее окно по принципу MAF. Хто такой MAF ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Хто такой MAF ? MAF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PlainUser 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 (изменено) · Жалоба Подсчет суммы квадратов за 1сек будет работать, если на интервале 1 сек укладывается целое число периодов "квадратов". Если частота на входе 50,25 Гц, то частота "квадратов" будет равна 100,5 Гц и на интервале 1 сек поместится 100,5 периодов, что даст ошибку при подсчете суммы равную сумме значений "квадратов" за пол периода. Если, конечно, я правильно понял смысл выражения "нет непрерывности". Я знаю. "...Подсчет суммы квадратов за 1сек дает замечательный результат с точностью даже выше чем надо... " MAF Вон че , MAF это просто скользящее среднее. Вроде надо что-то получше с более крутыми скатами. Частота среза 5-10Гц а частота сигнала на входе 50Гц , остаток в полосе должен быть не более 0.03% примерно. Изменено 14 апреля, 2016 пользователем PlainUser Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 14 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Вон че , MAF это просто скользящее среднее. Вроде надо что-то получше с более крутыми скатами. Сомнительно, что в природе существует КИХ-фильтр "с более крутыми скатами", чем у фильтра на основе "скользящего среднего". "Скользящее среднее" это же по сути "бин" преобразования Фурье на нулевой частоте и, следовательно, имеет АЧХ пропорциональную sinc-функции (если точнее, АЧХ пропорциональную функции Дирихле). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PlainUser 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Сомнительно, что существует в природе КИХ-фильтр "с более крутыми скатами", чем у фильтра на основе "скользящего среднего". "Скользящее среднее" это же по сути "бин" преобразования Фурье на нулевой частоте и, следовательно, имеет АЧХ пропорциональную sinc-функции (если точнее, АЧХ пропорциональную функции Дирихле). Не могли-бы вы привести яркий пример для моего случая , особенно что касается расчета количества необходимых точек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 14 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Не могли-бы вы привести яркий пример для моего случая , особенно что касается расчета количества необходимых точек. Все "яркие примеры для вашего случая" хранятся в MATLAB'e в пакете с именем fdatool. Дерзайте! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PlainUser 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 (изменено) · Жалоба Все "яркие примеры для вашего случая" хранятся в MATLAB'e в пакете с именем fdatool. Дерзайте! Звучит неубедительно. Откуда взялся фильтр бесселя. Вот отсюда. http://www.kit-e.ru/articles/circuit/2010_07_144.php Хотелось-бы услышать какие-то слова в пользу одной из сторон.Лучше с цифрами. Изменено 14 апреля, 2016 пользователем PlainUser Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PlainUser 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 (изменено) · Жалоба Вот сам фильтр который не желает усреднять. Может с ним что не так? Есть подозрение что у коэфф. точности флоата не хватает и он возбуждается. Но не уверен. /************************************************************** WinFilter version 0.8 http://www.winfilter.20m.com [email protected] Filter type: Low Pass Filter model: Bessel Filter order: 4 Sampling Frequency: 8 KHz Cut Frequency: 0.005000 KHz Coefficents Quantization: float Z domain Zeros z = -1.000000 + j 0.000000 z = -1.000000 + j 0.000000 z = -1.000000 + j 0.000000 z = -1.000000 + j 0.000000 Z domain Poles z = 0.994770 + j -0.001392 z = 0.994770 + j 0.001392 z = 0.999100 + j -0.004321 z = 0.999100 + j 0.004321 ***************************************************************/ #define NCoef 4 float iir(float NewSample) { float ACoef[NCoef+1] = { 0.00000000008095721658, 0.00000000032382886631, 0.00000000048574329947, 0.00000000032382886631, 0.00000000008095721658 }; float BCoef[NCoef+1] = { 1.00000000000000000000, -3.98773984171834520000, 5.96328712390839670000, -3.96335452951837610000, 0.98780724756468707000 }; static float y[NCoef+1]; //output samples static float x[NCoef+1]; //input samples int n; //shift the old samples for(n=NCoef; n>0; n--) { x[n] = x[n-1]; y[n] = y[n-1]; } //Calculate the new output x[0] = NewSample; y[0] = ACoef[0] * x[0]; for(n=1; n<=NCoef; n++) y[0] += ACoef[n] * x[n] - BCoef[n] * y[n]; return y[0]; } Изменено 14 апреля, 2016 пользователем PlainUser Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 14 апреля, 2016 Опубликовано 14 апреля, 2016 (изменено) · Жалоба y[0] = ACoef[0] * x[0]; y[0] = BCoef[0] * x[0]; y[0] += ACoef[n] * x[n] - BCoef[n] * y[n]; y[0] += BCoef[n] * x[n] - ACoef[n] * y[n]; Изменено 15 апреля, 2016 пользователем thermit Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба Сомнительно, что в природе существует КИХ-фильтр "с более крутыми скатами", чем у фильтра на основе "скользящего среднего". "Скользящее среднее" это же по сути "бин" преобразования Фурье на нулевой частоте и, следовательно, имеет АЧХ пропорциональную sinc-функции (если точнее, АЧХ пропорциональную функции Дирихле). Как это? Нет ничего круче (в счысле скатов) чем синк?Наоборот синк не очень убедительный фильтр (но простой в реализации). КИХ со скатами круче синка слеадть легко (ну в смысле коэффициентов не много понадобится). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 14 апреля, 2016 Опубликовано 14 апреля, 2016 · Жалоба thermit , Вы думаете WinFilter нагенерил бред? to PlainUser: поставте static перед массивами коэффициентов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 15 апреля, 2016 Опубликовано 15 апреля, 2016 (изменено) · Жалоба Нет. Винфильтер все правильно сгенерил. Это я сгенерил бред. Щас буду исправляться: Проблема в том, что данный фильтр нельзя реализовать в лоб во флоатах. При квантовании коэффициентов флоатами фильтр становится неустойчивым. Его нужно отконвертить в биквадратные блоки и только потом квантовать флоатами. Ну и реализовывать как последовательность бкб. Закончил исправляться. Изменено 15 апреля, 2016 пользователем thermit Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться