2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение20.05.2010, 23:58 
Заслуженный участник


09/08/09
3438
С.Петербург
manu в сообщении #322079 писал(а):
Простите за глупый вопрос (весь день в отладке), но что эта кривая означает с практической точки зрения?..

Если я правильно понял Вашу задачу, то эта кривая как раз и представляет собой зависимость, которую Вам надо аппроксимировать: по оси $x$ отложен выходной сигнал Вашего датчика, по оси $y$ -- соответствующее ему значение $cos(\alpha)$, которое МК должен выдавать наружу.

Кривая построена по данным для углов $-80^\circ$ до $0^\circ$ (т. е. по левой ветке выходной характеристики датчика).

"Загиб" в правой части соответсвует "подскоку" на исходной кривой.

Другими словами, Ваша программа должна прочитать выходной сигнал датчика, найти по этой кривой соответствующее значение $\cos(\alpha)$ и именно его выдать наружу.

С точки зрения реализации это делается обычно следующим образом:

по выходному значению датчика $x$ находим в таблице два соседних узла, таких что $ x_i \le x \le x_{i+1}$,
выходное значение вычисляем по формуле $y = y_i + (x - x_i) \dfrac {y_{i+1} - y_i}{x_{i+1} - x_i}$

Размер таблицы можно уменьшить за счёт удаления лишних точек. В частности, центральный участок практически линейный, поэтому внутренние точки пожно повыкидывать. Ну и на остальных участках тоже столько точек, наверное, необязательно.

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение21.05.2010, 18:06 


03/04/10
47
А если таки функцию сгенерить? Умеют какие-нибудь программы это делать?
Таблица мне душу гложет. Совсем хочу убрать...
График чем то напоминает показательную функцию, только перевёрнутую. Ну или приподнятый Ln(х).

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение21.05.2010, 19:36 
Заслуженный участник


09/08/09
3438
С.Петербург
manu в сообщении #322497 писал(а):
А если таки функцию сгенерить?
Сгенерите.
manu в сообщении #322497 писал(а):
Умеют какие-нибудь программы это делать?
Таких программ, чтобы ещё и предлагали вид зависимости, я не знаю.
Если вид аппроксимирующей функцией известен, то подобрать с помощью метода наименьших квадратов коэффициенты можно, например, экселем (см. Goal seek).
Матлабы/маткады это тоже, скорее всего, умеют.

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение21.05.2010, 20:06 


03/04/10
47
Maslov в сообщении #322522 писал(а):
Сгенерите.

Ну, собственно, вопросу "как" данная тема и посвящена. Я с самого начала написал, что хочу функцию, но не знаю как её получить (кроме ручной подгонки).

Maslov в сообщении #322522 писал(а):
Если вид аппроксимирующей функцией известен, то подобрать с помощью метода наименьших квадратов коэффициенты можно

Ок, порою в этом направлении.

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение22.05.2010, 21:34 
Аватара пользователя


15/01/06
200
manu в сообщении #322538 писал(а):
Maslov в сообщении #322522 писал(а):
Сгенерите.

Ну, собственно, вопросу "как" данная тема и посвящена. Я с самого начала написал, что хочу функцию, но не знаю как её получить (кроме ручной подгонки).


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

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение22.05.2010, 22:03 
Заслуженный участник


09/08/09
3438
С.Петербург
manu в сообщении #322538 писал(а):
Ок, порою в этом направлении.
Если будет не лень, расскажите потом, пожалуйста, чего удалось добиться.

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение23.05.2010, 12:02 


17/10/08

1313
С точки зрения здравого смысла подбирать функцию в данной задаче весьма странное занятие. Функцию (модель) подбирают в том случае, когда нужно делать на ее основе предсказание, или если требуется описать связь величин в виде уравнений и т.п. Тут просто нужна гладкая аппроксимация. Поменяете датчик или же со временем изменятся его характеристики – и все сначала. С помощью того же МНК нетрудно подобрать кусочно-гладко-сопряженную функцию.

Если можно использовать только основные арифметические операции (+, -, *, /), то ничего кроме дроби получить нельзя. Т.е. вид функции у Вас задан. Осталось только подобрать дробь. Даже эта задача весьма нетривиальна, так как имеет множество локальных оптимумов. Объявленным ранее требованиям удовлетворяет выражение (если брать 5% от от максимума начальной функции)

$F(x)=  9,57445427100725 + \frac {(-9,11330927213137+0,027871065518746*x+6,15585760916358e-03*x^2)} {(1-4,42955151728536e-04*x-6,40380592898939e-04*x^2+3,12605442260476e-07*x^3+1,31497322544087e-07*x^4)}$

См. график тут http://np-soft.ru/downloads/FOVx.xls

Но, по-моему, это "извращение".

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение23.05.2010, 13:59 


03/04/10
47
mserg в сообщении #322999 писал(а):
Функцию (модель) подбирают в том случае, когда нужно делать на ее основе предсказание,

Отнюдь. Бывают разные условия. Например, у МК может быть много ПЗУ, но мало выч. ресурса или наоборот, как в случае HIP - 50 МГц ядро и всего 4 кБ ПЗУ. Понятно, что он заточен на внешнее ПЗУ, но с внешним он теряет привлекательность по цене. По этому разработчику ставится задача упихать код в 4 кБ. В этом случае монстрообразная функция не выглядит глупо ;)
Выбор МК часто обусловлен экономическими соображениями - близость предприятий по производству МК и сборке приборов в Китае или прочие договорённости с производителем - а не здравым смыслом.
И не родился тот, кто даст покоя
Исчадьям ада электроники гримасс:-
Заказчик пишет нам ТЗ одной рукою,
Другой рукою думает о нас.
(с)-Xradio


mserg в сообщении #322999 писал(а):
Поменяете датчик или же со временем изменятся его характеристики – и все сначала.

Совершенно верно. Но если известна методика подбора, это не должно занимать много времени. Возможно, получится процесс автоматизировать, подгоняя функцию индивидуально под датчик при помощи стенда и ПК... Тут много простора для полёта фантазии...
Собственно по этому я вторую неделю уже собираю информацию по автоматическому получению уравнений функций и моделей.

mserg в сообщении #322999 писал(а):
См. график тут

Огромное спасибо!

mserg в сообщении #322999 писал(а):
Объявленным ранее требованиям удовлетворяет выражение (если брать 5% от от максимума начальной функции)

А с помощью чего подобрана функция? Где можно про это почитать?
Можете выложить исходный файл, если таковой существует?
Я бы хотел самостоятельно поковыряться, может получиться подобрать что-то более точное и влезающее по выч. загрузке, т.к. описать все условия моей задачи невозможно, надо генерировать функции и пробовать.
Эта функция занимает ~50% от допустимого вычислительного времени (посмотрел в отладчике), так что запас ещё есть, можно и что-то более громоздкое применить, если оно даст лучше точность.

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение25.05.2010, 19:55 


17/10/08

1313
Кубический сплайн дает хороший результат:
http://np-soft.ru/downloads/FOVy.xls
Для приведенного качества без особых проблем таблицу можно уместить в 100 байт. Сплайн подобран с помощью критерия суммы квадратов отклонений. Это задача технологична и может быть решена с помощью выпуклой оптимизации.

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

Подбором функции по данным, как уже несколько раз написано, занимается генетическое программирование. Я работаю над более совершенной системой:
http://np-soft.ru/downloads/automodel.zip
Задачи глобальной оптимизации встречаются в качестве подзадачи при подборе функции, поэтому подбор функций еще менее технологичен и непредсказуем по результату. В упор не вижу смысла пытаться использовать эту технологию для попытки сэкономить несколько десятков байт в ПЗУ (особенно учитывая, что “датчик стоит как самолет”). Но, как говорится, каждый кузнец своего счастья.

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение26.05.2010, 01:50 


03/04/10
47
mserg в сообщении #323857 писал(а):
Кубический сплайн дает хороший результат:

В смысле, интерполяция между точками кубическим сплайном?

mserg в сообщении #323857 писал(а):
Для приведенного качества без особых проблем таблицу можно уместить в 100 байт.

100 байт это дофига. У некоторых МК ПЗУ всего 500 байт. Типа тех, что китайцы ставят в ёлочные гирлянды. Но и цена им 5р в розницу.
120 байт у меня в одном проекте занимает реализация TCP IP со всеми педалями.

mserg в сообщении #323857 писал(а):
аже для небольшого количества подбираемых констант эта задача нетехнологична и чревата сюрпризами в виде узких выбросов в графике функций.

Но ведь всегда можно программно проанализировать оригинал и аппроксимированную функцию и найти эти расхождения, повторив ГА сначала в случае нахождения сюрпризов?

mserg в сообщении #323857 писал(а):
В упор не вижу смысла пытаться использовать эту технологию для попытки сэкономить несколько десятков байт в ПЗУ

Эксперимент - критерий истины. Будем пробовать, что технологичней, что даёт лучший результат, что меньше грузит ЦП vs ПЗУ и т.д.
Уже сейчас на предложенной Вами функции, после небольшой доработки кувалдой, я вышел на требуемую точность. Теперь надо добиться повторяемости результата...

mserg в сообщении #323857 писал(а):
особенно учитывая, что “датчик стоит как самолет”

Это "у них" он стоит как самолёт, а "у нас" он должен стоить как мопед карпаты и быть намного дуракаупорней (по опыту). Иначе никто у нас его не купит. За это и воюю...

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение26.05.2010, 12:24 


17/10/08

1313
Сплайн состоит из 10-ти одинаковых кусков кубических функций. На стыках куски имеют одинаковые значения и производные. Подбор сделан по критерию наименьших квадратов.

Я так и не понял, в чем выгода подбора функций и при чем здесь гирлянда по 5 рублей. Имеет смысл себестоимость единицы продукции. Если в стоимость каждого вашего прибора будет входить индивидуальный подбор функции, то это десятки или сотни долларов на каждый прибор. Это минимум. Вы, конечно, можете сказать, что будет дешевле, но вот сделать – крайне маловероятно.

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение26.05.2010, 14:36 


22/09/09
275
manu в сообщении #322497 писал(а):
А если таки функцию сгенерить? Умеют какие-нибудь программы это делать?
Таблица мне душу гложет. Совсем хочу убрать...
График чем то напоминает показательную функцию, только перевёрнутую. Ну или приподнятый Ln(х).

Как решить "под ключ" эту задачу на современном уровне?
1. Аппроксимация.
Для аппроксимации имеющихся данных измерений, особенно с наличием шума и погрешностей, с неполностью ясной природой, лучше всего применять нейросети. Ваша кривая скорее гауссоида, чем синусоида. В этом случае наилучший результат достигается аппроксимацией радиально-базисными нейросетями (RBF) - это обучение НС. В Матлабе можно это найти (напр. NeuroSolution for MatLab).
Аппроксимация Вам даст весовые коэффициенты нейросети, которые легко реализовать в виде расчетного модуля. Но эффективнее пункт 2 (см.).
2. Использование обученной НС.
Отечественое и зарубежное производство давно освоило нейропроцессоры, реализующие нейросети.
Применение нейропроцессоров дает возможность построить сверхкомпактные быстродействующие устройства управления.
Наболее продвинуты разработки НТЦ "МОДУЛЬ" -http://www.module.ru/ruindex.shtml
Как это делается можно почитать здесь: http://www.module.ru/files/nm6403nnemul-r.pdf
Поизучав сайт НТЦ "МОДУЛЬ" Вы найдете решение гораздо более сложных проблем, чем Ваша. И это должно Вас вдохновить на поиск наилучшего решения Вашей задачи. Успехов Вам.

 Профиль  
                  
 
 Re: Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение26.05.2010, 19:19 


03/04/10
47
mserg в сообщении #324046 писал(а):
Я так и не понял, в чем выгода подбора функций

Экономия ПЗУ при избытке вычислительной мощности.

mserg в сообщении #324046 писал(а):
и при чем здесь гирлянда по 5 рублей

Обычный МК стоит от 50р, а масочные китайские HIP - 5р. Упихаю в HIP, получу 10 раз экономии на МК = снижению себистоимости.


mserg в сообщении #324046 писал(а):
Если в стоимость каждого вашего прибора будет входить индивидуальный подбор функции, то это десятки или сотни долларов на каждый прибор. Это минимум. Вы, конечно, можете сказать, что будет дешевле, но вот сделать – крайне маловероятно.

Ну, это задача технологов и маркетологов. Им за это плОтют. Моя задача сделать железку и выдвинуть работающие варианты.
Если дойдём до тысячных серий (мечты...), автоматическая юстировка датчика на стенде и расчёт функции (её коэффициентов, таблицы и иже с ними) индивидуально для датчика не выглядит чем-то необычным. Наши буржуйские коллеги так и делают. В МК прошивается тестовая программа, которая передаёт ПК данные при юстировке. ПК внедряет обработанный результат в прошивку, перекомпиливает и перепрошивает МК. Или, при известной форме функции, корректируются коэффициенты и после юстировки дошиваются в eeprom МК. За одно и защита от клонирования в китае, где будет сборка, получается - без коэффициентов прибор мёртвый. А юстировку можно делать у нас.
Кроме того, задача подбора стоит и так. Вопрос только индивидуального, или один раз, или на каждую партию по результату юстировки 2-3 приборов и т.п. А функцию или таблицу так и так прошивать придётся, без них не работает.

Ajabsandal в сообщении #324095 писал(а):
с неполностью ясной природой,

Природа как раз ясна - освещённость площадки пропорциональна косинусу падения света, физика 10 класс. То есть оптодатчик в идеале должен иметь косинусоидальную передаточную характеристику. Задачей компенсации "неидеальности" как раз и занят...

Ajabsandal в сообщении #324095 писал(а):
Отечественое и зарубежное производство давно освоило нейропроцессоры, реализующие нейросети.

А смысл? С аппроксимацией кривой до косинуса по таблице/функции справится HIP за 5р, а с расчётом самой функции - обычный пенёк из магазина.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group