Перейти к содержанию
    

фильтр визуализации

Чем отфильтровать среднеквадратичное для индикации измеряемого напряжения в рмс вольтметре.

Измеряем 50гц.

Рубим выборки 8кгц непрерывно.

Убираем постоянную составляющую фильтром фвч.

Перемножаем , получаем квадраты.

Идет последовательность квадратов 8кгц.

Из них нужно непрерывно выделять постоянную составляющую цифровым фильтром.

Каким?

Пробовал бесселя 4п со срезом 5Гц и семплами 8кгц , фигня какая-то выходит.

Возможно частоты далеко друг от друга.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Измеряем 50гц.

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

Подсчет суммы квадратов за 1сек будет работать, если на интервале 1 сек укладывается целое число периодов "квадратов".

Если частота на входе 50,25 Гц, то частота "квадратов" будет равна 100,5 Гц и на интервале 1 сек поместится 100,5 периодов,

что даст ошибку при подсчете суммы равную сумме значений "квадратов" за пол периода.

Если, конечно, я правильно понял смысл выражения "нет непрерывности".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Сделайте скользящее окно по принципу MAF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подсчет суммы квадратов за 1сек будет работать, если на интервале 1 сек укладывается целое число периодов "квадратов".

Если частота на входе 50,25 Гц, то частота "квадратов" будет равна 100,5 Гц и на интервале 1 сек поместится 100,5 периодов,

что даст ошибку при подсчете суммы равную сумме значений "квадратов" за пол периода.

Если, конечно, я правильно понял смысл выражения "нет непрерывности".

 

Я знаю.

"...Подсчет суммы квадратов за 1сек дает замечательный результат с точностью даже выше чем надо... "

 

 

Вон че , MAF это просто скользящее среднее.

Вроде надо что-то получше с более крутыми скатами.

 

Частота среза 5-10Гц а частота сигнала на входе 50Гц , остаток в полосе должен быть не более 0.03% примерно.

 

Изменено пользователем PlainUser

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вон че , MAF это просто скользящее среднее.

Вроде надо что-то получше с более крутыми скатами.

Сомнительно, что в природе существует КИХ-фильтр "с более крутыми скатами", чем у фильтра на основе "скользящего среднего".

"Скользящее среднее" это же по сути "бин" преобразования Фурье на нулевой частоте и, следовательно, имеет АЧХ пропорциональную sinc-функции (если точнее, АЧХ пропорциональную функции Дирихле).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сомнительно, что существует в природе КИХ-фильтр "с более крутыми скатами", чем у фильтра на основе "скользящего среднего".

"Скользящее среднее" это же по сути "бин" преобразования Фурье на нулевой частоте и, следовательно, имеет АЧХ пропорциональную sinc-функции (если точнее, АЧХ пропорциональную функции Дирихле).

 

Не могли-бы вы привести яркий пример для моего случая , особенно что касается расчета количества необходимых точек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могли-бы вы привести яркий пример для моего случая , особенно что касается расчета количества необходимых точек.

Все "яркие примеры для вашего случая" хранятся в MATLAB'e в пакете с именем fdatool. Дерзайте! :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все "яркие примеры для вашего случая" хранятся в MATLAB'e в пакете с именем fdatool. Дерзайте! :biggrin:

 

Звучит неубедительно.

 

Откуда взялся фильтр бесселя.

Вот отсюда.

http://www.kit-e.ru/articles/circuit/2010_07_144.php

 

 

Хотелось-бы услышать какие-то слова в пользу одной из сторон.Лучше с цифрами.

Изменено пользователем PlainUser

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот сам фильтр который не желает усреднять.

Может с ним что не так?

 

Есть подозрение что у коэфф. точности флоата не хватает и он возбуждается.

Но не уверен.

 

/**************************************************************

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];

}

Изменено пользователем PlainUser

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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];

Изменено пользователем thermit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сомнительно, что в природе существует КИХ-фильтр "с более крутыми скатами", чем у фильтра на основе "скользящего среднего".

"Скользящее среднее" это же по сути "бин" преобразования Фурье на нулевой частоте и, следовательно, имеет АЧХ пропорциональную sinc-функции (если точнее, АЧХ пропорциональную функции Дирихле).

Как это? Нет ничего круче (в счысле скатов) чем синк?Наоборот синк не очень убедительный фильтр (но простой в реализации). КИХ со скатами круче синка слеадть легко (ну в смысле коэффициентов не много понадобится).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

thermit , Вы думаете WinFilter нагенерил бред?

to PlainUser: поставте static перед массивами коэффициентов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет. Винфильтер все правильно сгенерил. Это я сгенерил бред.

 

Щас буду исправляться:

 

Проблема в том, что данный фильтр нельзя реализовать в лоб во флоатах. При квантовании коэффициентов флоатами фильтр становится неустойчивым. Его нужно отконвертить в биквадратные блоки и только потом квантовать флоатами. Ну и реализовывать как последовательность бкб.

 

Закончил исправляться.

 

 

Изменено пользователем thermit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...