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

    

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

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

ссылка

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

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


Ссылка на сообщение
Поделиться на другие сайты
On 12/30/2018 at 2:36 AM, blackfin said:

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

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
2 hours ago, iiv said:

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

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

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

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

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


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

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
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-й гармоники.

 

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
1 hour ago, dimka76 said:

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

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

Quote

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

 

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


Ссылка на сообщение
Поделиться на другие сайты
On 1/12/2019 at 2:30 PM, blackfin said:

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

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

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

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

Quote

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

 

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


Ссылка на сообщение
Поделиться на другие сайты
3 hours ago, dimka76 said:

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
41 minutes ago, _pv said:

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

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

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


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

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

 

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

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


Ссылка на сообщение
Поделиться на другие сайты
16 minutes ago, iiv said:

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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
30 minutes ago, _pv said:

и отдельно RMS окна (вообще один раз заранее)

Простите мне моё невежество, но что такое RMS окна? И когда - заранее?

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


Ссылка на сообщение
Поделиться на другие сайты
3 hours ago, Herz said:

Простите мне моё невежество, но что такое RMS окна? И когда - заранее?

rms(signal*window) = rms(signal)*rms(window) ?
 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти