Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 06.11.2015, 09:50   #1
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Аппроксимация

Здравствуйте!

Имеется некий набор точек, допустим 5 (на самом деле их больше). Эти точки располагаются вблизи максимума. Нужно аппроксимировать точки кривой (Гаусс или параболой) и найти дробное значение n, соответствующее максимуму. Как попроще сделать для микроконтроллера?
Код:
n=15    Amp=182.23
n=16    Amp=456.366
n=17    Amp=793.953
n=18    Amp=205.923
n=19    Amp=116.41
PS: Чтобы никому не показалось троллингом в области высшей математики поясняю: это результат 1024-х точечного БПФ для частоты сигнала 52 Гц. Т.е с помощью БПФ вычисляется частота сигнала.
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 06.11.2015 в 09:57.
Pridnya вне форума   Ответить с цитированием
Старый 06.11.2015, 10:31   #2
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Здравствуйте!

Имеется некий набор точек, допустим 5 (на самом деле их больше). Эти точки располагаются вблизи максимума. Нужно аппроксимировать точки кривой (Гаусс или параболой) и найти дробное значение n, соответствующее максимуму. Как попроще сделать для микроконтроллера?
Код:
n=15    Amp=182.23
n=16    Amp=456.366
n=17    Amp=793.953
n=18    Amp=205.923
n=19    Amp=116.41
PS: Чтобы никому не показалось троллингом в области высшей математики поясняю: это результат 1024-х точечного БПФ для частоты сигнала 52 Гц. Т.е с помощью БПФ вычисляется частота сигнала.
так это и есть троллинг! sinx/x ни о чем не говорит? БПФ же
ampersant вне форума   Ответить с цитированием
Старый 06.11.2015, 10:45   #3
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от ampersant Посмотреть сообщение
так это и есть троллинг! sinx/x ни о чем не говорит? БПФ же
Игорь, я думаю, что ты пошутил. Реальная задача. Вопрос (как я вижу) в нахождении коэффициентов функции Гаусса по трем точкам (пять много). Возможно, задача не раз уже решалась.
Миниатюры
БПФ Измерение частоты.pdf   Функция Гаусса.png  
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 06.11.2015, 11:29   #4
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Игорь, я думаю, что ты пошутил. Реальная задача. Вопрос (как я вижу) в нахождении коэффициентов функции Гаусса по трем точкам (пять много). Возможно, задача не раз уже решалась.
Самое точное решение это найти непрерывную кривую по её дискретным значениям, затем найти максимум непрерывной кривой. Для этого надо не 3 точки. Единственно, что достаточно сразу ясно, между которыми точками БПФ находится максимум, и можно не всю свертку городить. А раз членов суммы конечное число - можно аналитически найти.

А иначе на кой ляд надо было 1024 точки обсчитывать?

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

Это я так сказать с высоты плинтуса своих познаний.
Хотя можно попробовать сравнить реультаты через Гаусса и sinx/x? или даже sinx/x с окном

Последний раз редактировалось ampersant; 06.11.2015 в 11:35.
ampersant вне форума   Ответить с цитированием
Старый 06.11.2015, 12:01   #5
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от ampersant Посмотреть сообщение
Самое точное решение это найти непрерывную кривую по её дискретным значениям, затем найти максимум непрерывной кривой. Для этого надо не 3 точки. Единственно, что достаточно сразу ясно, между которыми точками БПФ находится максимум.

А иначе на кой ляд надо было 1024 точки обсчитывать?
Чтобы более точно найти максимум и ближайшие точки для минимизации ошибки. Может какая библиотека есть на Си: вбил точки, а она тебе коэффициенты функции Гаусса посчитала за несколько итераций. Должна ж быть.

Цитата:
Сообщение от ampersant Посмотреть сообщение
А с другой стороны, мне было бы проще иметь не амплитуды, а векторы. Если знать на сколько градусов повернулся вектор за период, то частота уже готова.
За период, если период не известен. Это для фиксированной частоты, например 50 Гц, понятно будет, а для частоты в диапазоне 45-55 Гц, неизвестна частота и период.

Цитата:
Сообщение от ampersant Посмотреть сообщение
Это я так сказать с высоты плинтуса своих познаний.
Хотя можно попробовать сравнить реультаты через Гаусса и sinx/x? или даже sinx/x с окном
Точный результат даст функция функция Гаусса (люди так говорили).
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 06.11.2015, 12:02   #6
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Попробовал пока без Гаусса. везде 52Гц исходные.
Весовой способ по 5 точкам получается 52.44Гц
по 3 точкам 52.58

Параболой аналитически по 3м точкам - 52.69

По твоему графику 52.5Гц
ampersant вне форума   Ответить с цитированием
Старый 06.11.2015, 12:05   #7
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от Pridnya Посмотреть сообщение
За период, если период не известен. Это для фиксированной частоты, например 50 Гц, понятно будет, а для частоты в диапазоне 45-55 Гц, неизвестна частота и период.

Тебе абсолютно точно известно время измерения, и угол на который повернулся вектор (+ полное число оборотов из БПФ) не нужно знать заранее период сигнала, его же находить надо.
ampersant вне форума   Ответить с цитированием
Старый 06.11.2015, 12:11   #8
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от ampersant Посмотреть сообщение
Тебе абсолютно точно известно время измерения, и угол на который повернулся вектор (+ полное число оборотов из БПФ) не нужно знать заранее период сигнала, его же находить надо.
Это что-то совсем не то. Чтобы появился вектор нужно посчитать ДПФ или БПФ с заранее заданным парамерами (частота дискретизации, количество точек на период...). Т.е. его выделить нужно. Без этого нет вектора.

Цитата:
Сообщение от ampersant Посмотреть сообщение
Попробовал пока без Гаусса. везде 52Гц исходные.
Весовой способ по 5 точкам получается 52.44Гц
по 3 точкам 52.58

Параболой аналитически по 3м точкам - 52.69

По твоему графику 52.5Гц
Гауссом нужно попробовать.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 06.11.2015, 12:24   #9
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Это что-то совсем не то. Чтобы появился вектор нужно посчитать ДПФ или БПФ с заранее заданным парамерами (частота дискретизации, количество точек на период...). Т.е. его выделить нужно. Без этого нет вектора.
Получив комплексные значения по ряду частот, запоминаем эти векторы, продолжаем ещё один период накапливать и получаем уже новые значения векторов. Далее сравниваем до и после.

Цитата:
Гауссом нужно попробовать.
Инструметнов под Гаусс нет под руками. А когда появится, то и sinx/x проверить можно будет. Но 3 точки -не вариант. Более того, а что будешь делать, если 2 и более частоты сразу будет?
ampersant вне форума   Ответить с цитированием
Старый 06.11.2015, 12:39   #10
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от ampersant Посмотреть сообщение
Получив комплексные значения по ряду частот, запоминаем эти векторы, продолжаем ещё один период накапливать и получаем уже новые значения векторов. Далее сравниваем до и после.
Ответ уверенный, но это не то. А самому свой метод в цифрах опробовать.
Цитата:
Сообщение от ampersant Посмотреть сообщение
Инструметнов под Гаусс нет под руками. А когда появится, то и sinx/x проверить можно будет. Но 3 точки -не вариант. Более того, а что будешь делать, если 2 и более частоты сразу будет?
Гармоники могут быть только кратными основной, для 50 Гц это 100, 150... В случае 52 Гц, это 104, 156...Т.е. рядом с частотой 52 Гц ничего нет (при разрешении по частоте 2-3 Гц). Это абстрактная модель выдает спектр около 52 Гц, а физически там только одна частота 52 Гц.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 06.11.2015, 12:49   #11
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Ответ уверенный, но это не то. А самому свой метод в цифрах опробовать.

Гармоники могут быть только кратными основной, для 50 Гц это 100, 150... В случае 52 Гц, это 104, 156...Т.е. рядом с частотой 52 Гц ничего нет (при разрешении по частоте 2-3 Гц). Это абстрактная модель выдает спектр около 52 Гц, а физически там только одна частота 52 Гц.
Да ну... если это сеть, то там может быть и не кратно основной если есть двигатели.

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

Последний раз редактировалось ampersant; 06.11.2015 в 12:56.
ampersant вне форума   Ответить с цитированием
Старый 06.11.2015, 13:50   #12
MaxPIC
Senior Member
 
Регистрация: 02.05.2007
Возраст: 34
Сообщений: 148
Вес репутации: 387/50
MaxPIC is just really niceMaxPIC is just really niceMaxPIC is just really niceMaxPIC is just really nice
По умолчанию Re: Аппроксимация

Посмотрите книгу Хемминг "Цифровые фильтры". На стр.41 приведён пример аппроксимации параболой, полученной по методу наименьших квадротов от точек. Там в формуле считается значение параболы, но Вы можете определять сразу положение её максимума, исходя из того, что положение x0= -B/(2*A) при f(x)=A*x^2+B*x+C
MaxPIC вне форума   Ответить с цитированием
Старый 06.11.2015, 13:52   #13
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от MaxPIC Посмотреть сообщение
Посмотрите книгу Хемминг "Цифровые фильтры". На стр.41 приведён пример аппроксимации параболой, полученной по методу наименьших квадротов от точек. Там в формуле считается значение параболы, но Вы можете определять сразу положение её максимума, исходя из того, что положение x0= -B/(2*A) при f(x)=A*x^2+B*x+C

Я уже приводил не утешительный результат этого метода. Осталось попробовать Гаусса и sinx/x

2Pridnya: Интерполяция вообще-то нужна.
ampersant вне форума   Ответить с цитированием
Старый 06.11.2015, 16:13   #14
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от MaxPIC Посмотреть сообщение
Посмотрите книгу Хемминг "Цифровые фильтры". На стр.41 приведён пример аппроксимации параболой, полученной по методу наименьших квадротов от точек. Там в формуле считается значение параболы, но Вы можете определять сразу положение её максимума, исходя из того, что положение x0= -B/(2*A) при f(x)=A*x^2+B*x+C
Спасибо! Параболическая аппроксимация проще чем Гаусс, но результат (для БПФ 1024 ) пока не радует 52,7 Гц, а задана частота ровно 52 Гц. Но и это результат.
Код:
float x1,x2,x3,y1,y2,y3;

x1 = 16; y1 = 456,366;
x2 = 17; y2 = 793,953;
x3 = 18; y3 = 205,923;
    
float a = (y3 - (x3*(y2-y1)+x2*y1-x1*y2)/(x2-x1))/(x3*(x3-x1-x2)+ x1*x2);
float b = (y2-y1)/(x2-x1) - a*(x1+x2);
float c = (x2*y1 - x1*y2)/(x2-x1) + a*x1*x2;
float xa = -b/(2.0F*a); 

cout <<"a = " << a << endl;     // a = -462.5
cout <<"b = " << b << endl;     // b = 15599.5
cout <<"c = " << c << endl;     // c = -130736 
cout <<"xa = " << xa << endl;   // xa = 16.8643
// 16.864*3.125 = 52.7 Гц.
Цитата:
Сообщение от ampersant Посмотреть сообщение
Я уже приводил не утешительный результат этого метода. Осталось попробовать Гаусса и sinx/x

2Pridnya: Интерполяция вообще-то нужна.
Понятно, что пробовать нужно.
Код:
FFT2048
x1 = 32;    y1=191.972;
x2 = 33;    y2=876.264;
x3 = 34;    y3=340.344;
a = -610.106  2048FFT
b = 40341.2
c = -665978
xa = 33.0608;  33.068*3.125/2 = 51.668 Гц

FFT4096
x1=66;  y1=560.62;
x2=67;  y2=708.358;
x3=68;  y3=214.894;
a = -320.602
b = 42787.8
c = -1.42689e+006
xa = 66.7304; 66.7304*3.125/4 = 52.13 Гц.
Даже при 4096-точечном БПФ аппроксимация параболой дает ошибку 0,13Гц. Параболу использовать смысла нет.
__________________
Прогресс неизбежен.

Последний раз редактировалось Pridnya; 06.11.2015 в 16:28.
Pridnya вне форума   Ответить с цитированием
Старый 06.11.2015, 16:40   #15
IceS
Super Moderator
 
Регистрация: 01.03.2007
Адрес: St. Petersburg
Возраст: 40
Сообщений: 3,246
Вес репутации: 3684/114
IceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond repute
Отправить сообщение для IceS с помощью ICQ
По умолчанию Re: Аппроксимация

Частоту дискретизации выбери кратно искомой - будешь 100% попадать на неё .
Или кол-во точек фурье выбирай так, чтобы частота фурье точно попадала на твои 52, но тут уже нельзя будет пользоваться FFT, но если нужен поиск только 52Гц - то можно искать только её - еще и на расчетах сэкономить получится.

PS если частоту дискретизации поднять - то ошибка уменьшится даже в существующей системе.
__________________
- Готово, мастер !!!
- Что готово ???
- Сломал ...
IceS вне форума   Ответить с цитированием
Старый 06.11.2015, 19:36   #16
MaxPIC
Senior Member
 
Регистрация: 02.05.2007
Возраст: 34
Сообщений: 148
Вес репутации: 387/50
MaxPIC is just really niceMaxPIC is just really niceMaxPIC is just really niceMaxPIC is just really nice
По умолчанию Re: Аппроксимация

А попробуйте увеличить число точек с 3-х до 7-ми, например, ну или на худой конец до 5-ти. Трёх слишком мало.
MaxPIC вне форума   Ответить с цитированием
Старый 06.11.2015, 19:47   #17
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от IceS Посмотреть сообщение
Частоту дискретизации выбери кратно искомой - будешь 100% попадать на неё .
Или кол-во точек фурье выбирай так, чтобы частота фурье точно попадала на твои 52, но тут уже нельзя будет пользоваться FFT, но если нужен поиск только 52Гц - то можно искать только её - еще и на расчетах сэкономить получится.
Дело в том, что я хотел измерять частоту в диапазоне 45-55 Гц с разрешающей способностью 0,01Гц. Т.е. известно, что частота точно в диапазоне 45-55 и других частот в этом диапазне нет (другие отфильтрованы).
Цитата:
Сообщение от IceS Посмотреть сообщение
PS если частоту дискретизации поднять - то ошибка уменьшится даже в существующей системе.
Понятно, что увеличение частоты дискретизации уменьшит ошибку, но и ресурсов потребует больше. Предлагали даже использовать ДПФ для бинов диапазона 45-55, мне же не нужно знать верхние гармоники с разрешением 0,01 Гц. Возможно, будет менее накладно при большом количестве точек, да и то, DSP-библиотека для STM32F4 поддерживает максимальный размер FFT 4098. Наверное, нужно изменить метод оценки частоты, а то ресурсы на пределе, а точности никакой. Методы предлагали, но там нужно вникнуть (трехэтажные формулы с английским описанием методики).
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 06.11.2015, 20:36   #18
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от MaxPIC Посмотреть сообщение
А попробуйте увеличить число точек с 3-х до 7-ми, например, ну или на худой конец до 5-ти. Трёх слишком мало.
Это я три точки взял для параболической аппроксимации, там коэффициенты параболы расчитываются по трем точкам. А 5 или 7 точек (можно и больше) подойдут для аппроксимации функцией Гаусса (или еще каким полиномом). Но и здесь проблема есть, т.к. распределение точек не симметричное вблизи максимума (не нормальное, по Гауссу). Там какая-то кривая должна быть, вроде кривого купола, она будет точнее Гаусса давать максимум. В институте теорию давали (теория случайных процессов, оптимизация, методы поиска максимума), но зачем оно нужно никто не объяснял. Не отложилось, поэтому знаний не хватает.
Можно попробовать другие методы оценки частоты.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 06.11.2015, 22:16   #19
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

5 точек для sinx/x дают частоту 52.7

Подкинь ещё 13-ю 14-ю и 20, 21-е частоты. Попробую проверить как быстро выйдет на результат.
ampersant вне форума   Ответить с цитированием
Старый 07.11.2015, 12:28   #20
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от ampersant Посмотреть сообщение
5 точек для sinx/x дают частоту 52.7

Подкинь ещё 13-ю 14-ю и 20, 21-е частоты. Попробую проверить как быстро выйдет на результат.
Нашел 14-ую. Не помогло => 52.5Гц через sinx/x

волшебное средство дам счас (экскременты от Маткада):

Самая простая формула:
Код:
(16*A16+17*A17)
----------------------
     (A16+A17)
C разбегу дает результат центра тяжести. Для частот
50Гц и 53.125Гц точный результат (тут любой алгоритм верно сообщает)

Для 52.4Гц тоже верно вычисляется. Для диапазона 50-52.4 показания занижены до -0.02Гц. В диапазоне 52.4 - 53.125 эавышены до +0,007Гц
Далее корректировочная таблица или формула. Она имеет место быть т.к. погрешность постоянная и не зависит от измеряемого сигнала.

Для расширения рабочего диапазона измерений необходимо сначала найти максимальную пару, т.е. между которыми находится искомая частота. А чтобы быстро найти, где именно искомая частота формулу расширяем на сумму в числителе и знаменателе от A13 до A20. получаем грубо где частота. Далее уже в узком диапазоне более точно.
ampersant вне форума   Ответить с цитированием
Старый 07.11.2015, 13:29   #21
MaxPIC
Senior Member
 
Регистрация: 02.05.2007
Возраст: 34
Сообщений: 148
Вес репутации: 387/50
MaxPIC is just really niceMaxPIC is just really niceMaxPIC is just really niceMaxPIC is just really nice
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Это я три точки взял для параболической аппроксимации, там коэффициенты параболы расчитываются по трем точкам. А 5 или 7 точек (можно и больше) подойдут для аппроксимации функцией Гаусса (или еще каким полиномом). Но и здесь проблема есть, т.к. распределение точек не симметричное вблизи максимума (не нормальное, по Гауссу). Там какая-то кривая должна быть, вроде кривого купола, она будет точнее Гаусса давать максимум. В институте теорию давали (теория случайных процессов, оптимизация, методы поиска максимума), но зачем оно нужно никто не объяснял. Не отложилось, поэтому знаний не хватает.
Можно попробовать другие методы оценки частоты.
Дело не в выборе функции аппроксимации, а в критерии: Вы можете использовать МНК, минимум максимального отклонения или другой критерий, необходимый Вам.
Как вариант, можете вообще добавить нулевые отсчёты между Вашими данными так, чтобы шаг между отсчётами был 0,01Гц, а затем пропустить этот массив через фильтр нижних частот, после чего найти глобальный максимум на интересующем Вас участке. Положение этого максимума и даст Вам интересующую частоту. ФНЧ можно сделать с коэффициентами, кратными степени двойки для ускорения вычислений (заменить деление на сдвиг).
MaxPIC вне форума   Ответить с цитированием
Старый 08.11.2015, 10:52   #22
xepp
Senior Member
 
Аватар для xepp
 
Регистрация: 24.04.2007
Адрес: Kazan
Возраст: 41
Сообщений: 568
Вес репутации: 1108/62
xepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud ofxepp has much to be proud of
Отправить сообщение для xepp с помощью ICQ
По умолчанию Re: Аппроксимация

Задача аппроксимации функций полиномами решается сравнительно просто и, что важно, всегда имеет единственное решение. В отличие от аппроксимации sinc-ом или нормальным распределением. Ключ для поиска - матрица Грама и МНК с полиномами. Весь процесс аппроксимации выглядит как умножение обратной матрицы Грама (которую для параболы легко найти заранее) на подготовленный из экспериментальной функции и базисных функций вектор. Для трёх точек результат ляжет точно по точкам, получим обычную интерполяцию. Тут вопрос в другом, вопрос в методике измерения частоты. На БПФ можно посмотреть как на способ быстро вычислить выходы множества sinc-КИХ фильтров, ширина полосы пропускания которых определяется временем выборки. Если надо разрешение в 0.01Гц и априорной информации о сигнале почти никакой, то время выборки как ни крути должно быть порядка 100 сек, никакие хитрые математические алгоритмы это ограничение серьёзно не обойдут. Это выполнено?
xepp вне форума   Ответить с цитированием
Старый 08.11.2015, 13:45   #23
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,511
Вес репутации: 4829/116
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от xepp Посмотреть сообщение
Задача аппроксимации функций полиномами решается сравнительно просто и, что важно, всегда имеет единственное решение. В отличие от аппроксимации sinc-ом или нормальным распределением. Ключ для поиска - матрица Грама и МНК с полиномами. Весь процесс аппроксимации выглядит как умножение обратной матрицы Грама (которую для параболы легко найти заранее) на подготовленный из экспериментальной функции и базисных функций вектор. Для трёх точек результат ляжет точно по точкам, получим обычную интерполяцию. Тут вопрос в другом, вопрос в методике измерения частоты. На БПФ можно посмотреть как на способ быстро вычислить выходы множества sinc-КИХ фильтров, ширина полосы пропускания которых определяется временем выборки. Если надо разрешение в 0.01Гц и априорной информации о сигнале почти никакой, то время выборки как ни крути должно быть порядка 100 сек, никакие хитрые математические алгоритмы это ограничение серьёзно не обойдут. Это выполнено?

(не сарказм) Уважаю ваше знакомство с такими "авторитетами с района" а можно с формулами?

Частотомер Ч3-64, стартующий одновременно с началом вспышки PAL измеряет частоту за время 1 мкс. Индикатор показывает 4.4336МГц.
Время между запусками 20мс.


За время 100сек частота может серьезно погулять. Измерена будет лажа. Наступаем на грабли типа неопределенности Гейзенберга. Получаем значение которое было когда-то, либо Сейчас, но неизвестно что.

Тут прикол в чем, когда будут проводиться испытания на тестовом сигнале прибор покажет все четко 0.01Гц, когда будет брошен в реальность - что-то покажет. И это будет проблемами восприятия оператора.
ampersant вне форума   Ответить с цитированием
Старый 08.11.2015, 15:25   #24
MaxPIC
Senior Member
 
Регистрация: 02.05.2007
Возраст: 34
Сообщений: 148
Вес репутации: 387/50
MaxPIC is just really niceMaxPIC is just really niceMaxPIC is just really niceMaxPIC is just really nice
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от ampersant Посмотреть сообщение
Частотомер Ч3-64, стартующий одновременно с началом вспышки PAL измеряет частоту за время 1 мкс. Индикатор показывает 4.4336МГц.
Время между запусками 20мс.


За время 100сек частота может серьезно погулять. Измерена будет лажа. Наступаем на грабли типа неопределенности Гейзенберга. Получаем значение которое было когда-то, либо Сейчас, но неизвестно что.
БПФ - это есть набор фильтров. Если Вы говорите о частоте как о мгновенном значении, то ТС нужно на входе поставить компаратор и получать цифровой сигнал 1/0, а далее с помощью таймера МК определять каждое мгновенное значение частоты. При этом получить разрешение в 0,01 Гц на 50 Гц будет не проблема даже на 16-битном таймере. И никакой математики и апроксимаций.
MaxPIC вне форума   Ответить с цитированием
Старый 08.11.2015, 23:01   #25
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,649
Вес репутации: 4545/130
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: Аппроксимация

Цитата:
Сообщение от MaxPIC Посмотреть сообщение
Дело не в выборе функции аппроксимации, а в
критерии: Вы можете использовать МНК, минимум максимального
отклонения или другой критерий, необходимый Вам.
Как вариант, можете вообще добавить нулевые отсчёты между Вашими
данными так, чтобы шаг между отсчётами был 0,01Гц, а затем
пропустить этот массив через фильтр нижних частот, после чего найти
глобальный максимум на интересующем Вас участке. Положение этого
максимума и даст Вам интересующую частоту. ФНЧ можно сделать с
коэффициентами, кратными степени двойки для ускорения вычислений
(заменить деление на сдвиг).
Было бы более интересно увидеть "вывод формулы" успеха. Т.е. не вы
тестируете на мне свои идеи, а все мы восхищаемся достигнутым вами
результатом.
Ну, хотя бы, для начала расчет фильтра Баттерворта 5 порядка с
коэффициентами, кратными степени двойки. Оно мне интересно из за
желания узнать, как вы такой фильтр проектировали и проектировали ли
вообще.
PS: Встречаются кандидаты наук, которые частоту по трем точкам
синуса могут посчитать, выкладки пишут "из головы". И результат
получают с точностью 0,001 Гц, но:
а) для этого сигнал должен быть идеальным (идеальный синус, данные
float);
б) баг один есть: средняя точка не должна попадать в ноль (переход
через ноль);
в) метод не работает вообще, если три точки попадают в аварийный
режим (резкое увеличение амплитуды синуса);
г) люди удивляются, что их метод не работает (может на мне протестировали).

Цитата:
Сообщение от xepp Посмотреть сообщение
Задача аппроксимации функций полиномами решается сравнительно просто и, что важно, всегда имеет единственное решение. В отличие от аппроксимации sinc-ом или нормальным распределением. Ключ для поиска - матрица Грама и МНК с полиномами. Весь процесс аппроксимации выглядит как умножение обратной матрицы Грама (которую для параболы легко найти заранее) на подготовленный из экспериментальной функции и базисных функций вектор. Для трёх точек результат ляжет точно по точкам, получим обычную интерполяцию. Тут вопрос в другом, вопрос в методике измерения частоты. На БПФ можно посмотреть как на способ быстро вычислить выходы множества sinc-КИХ фильтров, ширина полосы пропускания которых определяется временем выборки. Если надо разрешение в 0.01Гц и априорной информации о сигнале почти никакой, то время выборки как ни крути должно быть порядка 100 сек, никакие хитрые математические алгоритмы это ограничение серьёзно не обойдут. Это выполнено?
Известно, что сигнал находится в диапазоне 45-55 Гц (для более сложного случая 30-55 Гц). Поэтому про 100 секунд измерения можно не писать. За 100 секунд система разрушится.
Есть методы оценки частоты, которые работают значительно быстрее 100 сек. Базис только нужно изменить (я про базис мышления).
Вы как-то очень по научному начали писать (первая половина поста), а закончили про 100 секунд. Похоже на генератор научного текста (бывает, что аспирантам и научным работникам нужны научные статьи, публикации, и они генерят технический бред и его публикуют в как бы научных журналах за бабки). В нашей редакции такое не пройдет.

Цитата:
Сообщение от MaxPIC Посмотреть сообщение
БПФ - это есть набор фильтров. Если Вы говорите о частоте как о мгновенном значении, то ТС нужно на входе поставить компаратор и получать цифровой сигнал 1/0, а далее с помощью таймера МК определять каждое мгновенное значение частоты. При этом получить разрешение в 0,01 Гц на 50 Гц будет не проблема даже на 16-битном таймере. И никакой математики и апроксимаций.
Я таким способом на PIC16F628A получал разрешение 0,01 Гц (со звуковой карты компа выдавал сигнал в диапазоне 32-75 Гц через 1 Гц). И метод позволяет оценить частоту за каждый период и скорость её изменения.
На STM32 модуль захвата вообще заточен под такое измерение, сейчас так и считаю, но хотел попробовать программно.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 16:50.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot