Jump to content

    
haker_fox

Коллеги, что порекомендуете для вычисления RMS по выборкам?

Recommended Posts

Случайно набрел на данную книгу: "Аппроксимационные методы и системы измерения и контроля параметров периодических сигналов"

ссылка

может пригодится.

Share this post


Link to post
Share on other sites
On 12/30/2018 at 2:36 AM, blackfin said:

В моей программе Фурье не вычисляется. Входной сигнал умножается на exp(-a*t^2), полученное произведение возводится в квадрат, после чего суммируется по всем точкам на интервале измерения. Затем полученная сумма делится на вес оконной функции Гаусса и вычисляется квадратный корень. 

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

 

Ждем от ТС результатов, надеюсь эти баталии помогли ему выбрать правильный метод и успешно решить задачу.

Share this post


Link to post
Share on other sites
2 hours ago, iiv said:

Если соответствующие таблицы размером в несколько мегабайт в память влезут и под тысячу флопов на одну оцифровку не пугают - да, проблем нет

Какие ещё "мегабайты таблиц"? Вы бредите?

У ТС частота дискретизации 8 кГц, разрядность АЦП равна 24 бита, поэтому размер таблицы равен: 3*4*8000/50 = 1920 байт.

Таблица одна для любых частот от 45 Гц до 4 кГц.

Share this post


Link to post
Share on other sites

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

 

Я надеюсь мы все понимаем, что 50 и 50.3Гц в случае ТС надо различать, ибо это 160 и 159 отсчетов и ТС не особенно волнует 50 или 100Гц у него несущая.

Share this post


Link to post
Share on other sites
16 hours ago, iiv said:

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

Вот вам "псевдо-код":

double GW[640];     // Таблица коэффициентов оконной ф-ции Гаусса, == exp(-a*t^2)
double WG;          // Вес окна Гаусса

double MS = 0.0;    // Mean Square
double RMS;         // Root Mean Square
  
double ST[640*2];   // Source Signal

double GS;

int i;
  
for (i = 0; i < 640; i++)
{
	GS = GW[i]*ST[i];
	MS += GS*GS;
}
for (; i < 640*2; i++)
{
	GS = GW[640*2-1-i]*ST[i];
	MS += GS*GS;
}
RMS = sqrt(MS/WG);
16 hours ago, iiv said:

Я надеюсь мы все понимаем, что 50 и 50.3Гц в случае ТС надо различать, ибо это 160 и 159 отсчетов и ТС не особенно волнует 50 или 100Гц у него несущая.

Встречное предложение.. Посчитайте своим методом RMS для сигнала с гармониками:

RMS.thumb.jpg.9ccaf03dbee1a0b6edad94f83d8d5a98.jpg

 

Ибо:

On 12/27/2018 at 3:33 AM, haker_fox said:

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

 

Share this post


Link to post
Share on other sites
1 hour ago, dimka76 said:

ТС надо за 0.5 секунды померить RMS. А если просто взять среднеквадратичное значение всех выборок, полученных за эти 0.5 сек. ?

Перечитайте топик.

Quote

Данные (измеренную частоту, и RMS) нужно выдавать не чаще, чем каждые 0.5 с.

 

Share this post


Link to post
Share on other sites
On 1/12/2019 at 2:30 PM, blackfin said:

Вот вам "псевдо-код":

У вас t это период дискретизации ?

А как быть с определением частоты входного сигнала ?

Ведь как правильно заметил Herz, в ответ на мое сообщение:

Quote

Данные (измеренную частоту, и RMS) нужно выдавать не чаще, чем каждые 0.5 с.

 

Share this post


Link to post
Share on other sites
3 hours ago, dimka76 said:

А как быть с определением частоты входного сигнала ?

если считать RMS с оконной функцией, частоту сигнала определять не надо, ошибку на краях из-за непопадания частоты сигнала в длину выборки целое число раз задавит оконная функция.

Share this post


Link to post
Share on other sites
41 minutes ago, _pv said:

если считать RMS с оконной функцией, частоту сигнала определять не надо, ошибку на краях из-за непопадания частоты сигнала в длину выборки целое число раз задавит оконная функция.

конечно если только RMS, то тут куча вариантов, хоть оконная функция, хоть сравнение интеграла квадрата функции и интеграла квадрата производной, но вроде ТС писал, что де все-таки он период тоже знать хочет.

Share this post


Link to post
Share on other sites

Если говорить только про период - Вы же его не считаете, только RMS, а ТС и его тоже хочет.

 

Про sin(x)-0.3*sin(5x)-0.3(3x) - если меньше коэффициенты у гармоник будут, то они не будут видны, иначе надо взять чуть больше векторов сингулярного разложения и в них поместятся все эти гармоники. Но тут надо заранее знать сколько есть ярких (близких по порядку) в L2 норме сигналов в исходном и брать размерность матрицы в сингулярном разложении не менее этого числа плюс один.

Share this post


Link to post
Share on other sites
16 minutes ago, iiv said:

конечно если только RMS, то тут куча вариантов, хоть оконная функция, хоть сравнение интеграла квадрата функции и интеграла квадрата производной, но вроде ТС писал, что де все-таки он период тоже знать хочет.

Изначально измерение частоты нужно было ТСу чтобы подбирать длину выборки и считать RMS как обычно, иначе не влезающие в целое количество периодов куски начинают давать ошибку.

но если посчитать RMS от сигнала * окно как есть, и отдельно RMS окна (вообще один раз заранее), то можно получить исходный RMS сигнала без оконной функции, о чем blackfin с самого начала и говорил.

Share this post


Link to post
Share on other sites
On 12/22/2018 at 1:01 PM, haker_fox said:

Недавно выяснилось, что нужно алгоритм адаптировать для частот 48 - 62 Гц. Классика уже не работает, по-крайней мере с дискретными данными.

...

Собственно мои вопросы:

2. Имеется ли в природе другой алгоритм, более быстрый для данной задачи?

 

Прошел год...

Удалось ли что-то сделать в железе?

Какой алгоритм выбрали?

Какая получилась точность измерения?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.