2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Аппроксимация кривой. Как и чем? Желательно с помощью ПК.
Сообщение18.05.2010, 00:40 


03/04/10
47
Рискну спросить тут...
Имеется выходная характеристика фотодатчика (график 1), которая частично коррелируется с графиком идеального косинуса (2). Причём до 40 градусов, а потом различие становится весьма заметно.
Изображение
Применение известных ранее методов обработки сигнала, подразумевающих косинусоидальный выход, приводит к большим ошибкам за значением 40 градусов. Соответственно надо как-то привести характеристику к косинусу. Хотя бы до 60 градусов чтобы было похоже...
Выходную функцию я, в меру своих воспоминаний о 2 курсе, записал в виде:
$ U_{( a )} = K*cos( a ) + K*F_{( a )}. $
Где К - масштабный коэффициент, а - угол на источник излучения, $  F_{( a )} $ - искомая функция аппроксимации.
Перебить график 1 в таблицу я могу вручную (может можно как-то автоматом?), т.к. он есть только в графической форме. Но аппроксимировать вручную, ИМХО, изврат в настоящее время. Можно ли как-то заставить маткад/матлаб получить $  F_{( a )} $ исходя из двух графиков (косинуса и таблицы значений с опр. шагом)?

ПС. Имею матлаб 6,5 и 7, а также маткад 14.

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


09/08/09
3438
С.Петербург
manu в сообщении #320895 писал(а):
Перебить график 1 в таблицу я могу вручную (может можно как-то автоматом?), т.к. он есть только в графической форме.
Несколько лет назад пользовался для оцифровки программкой GetData: http://www.getdata.com.ru/ (там триальная лицензия на 21 день).

Предположим, найдёте Вы
$F_{(a)} = \dfrac {U_{(a)} - cos(a)} K$

(для этого никакой маткад/матлаб не нужен -- экселя за глаза хватит)

А дальше как $F_{(a)}$ будете использовать?

В такой постановке это вообще не задача аппроксимации; это задача оценки погрешности аппроксимации экспериментальных данных заранее заданной функцией (косинусом).

Вы, может быть, поподробнее свою проблему объясните?
(Тогда больше шансов будет что-нибудь полезное присоветовать).

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


03/04/10
47
Гениальная программа! Оцифровал за 15 минут. Ещё 30 потратил на экспорт из-за кривых настроек проги и экселя, но в целом доволен как слон. Уже имею эксель файл с помянутым графиком! :lol: А то настроился его печатать и линейкой мерить... :oops:

Ексель, матлаб, маткад мне не важно :) Мне надо ехать. Просто пошарив по инету я пришёл к выводу, что нужен матлаб...

Задача прикладная. Есть датчики положения магнитного типа образца 60-х. Что то среднее между сельсинами и холлами. Имеют строго косинусоидальную зависимость выходного сигнала от угла. То есть, фактически, возвращают косинус угла, умноженный на некий масштабный коэффициент.
Есть буржуйские оптические датчики, которые ставятся взамен магнитных и стОят как самолёт.
И есть я, который делает аналог буржуйского датчика. Сама схемотехника проблем не вызывает, но датчик врёт. Как известно, освещённость площадки пропорциональна косинусу угла падения света и теоретически фотодатчик должен иметь выходной сигнал, пропорциональный косинусу угла на источник света. Практически имеем то, что под номером 1 на рисунке. Кстати я там ошибся - график 1 до 80 градусов, а косинус 2 до 90, то бишь не в масштабе получилось. Но не суть. Смысл отражает.
И вот график 1 надо привести к косинусу, чтобы мой датчик тоже выдавал косинус угла хотя бы в диапазоне +-60 градусов, а не этот косинусообразный график 1.
Как это лучше сделать?

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


29/09/06
4552
Ваш чёрненький график --- вполне приличный косинус, что-то вроде $A(1+\cos\omega t)$, т.е. приподнятый. А красная кривая (типа $2A\cos\omega' t$) --- не приподнятая. И не может моделировать приподнятый косинус.
Предлагаю МНК. Но предлагаю неуверенно, ибо в физику и прочие детали пока не вчитался.

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


03/04/10
47
До 40 он косинус. А потом начинаются ошибки на 8-12 градусов.

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


09/08/09
3438
С.Петербург
Другими словами, Вам надо подобрать такое преобразование данных, получаемых с Вашего датчика, чтобы на выходе получился косинус?

Тогда бы начал с того, что построил зависимость

$\cos(\alpha) = F(U(\alpha))$,

где $U(\alpha)$ -- Ваша выходная характеристика после нормировки на 1.

Ну а потом уже можно подумать, как эту зависимость получше аппроксимировать.
Там вообще-то проблем особых быть не должно, вот только с "подскоками" по краям надо будет как-то разобраться (а то преобразование неоднозначным получается).

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


03/04/10
47
Maslov в сообщении #320967 писал(а):
Другими словами, Вам надо подобрать такое преобразование данных, получаемых с Вашего датчика, чтобы на выходе получился косинус?

Так точно.

Maslov в сообщении #320967 писал(а):
Тогда бы начал с того, что построил зависимость

Чем это можно сделать? Автоматически. Или я чего-то не понял?...

Maslov в сообщении #320967 писал(а):
вот только с "подскоками" по краям надо будет как-то разобраться

Да не важно пока. Диапазон 60 градусов вполне устроит на данном этапе.

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


09/08/09
3438
С.Петербург
manu в сообщении #321123 писал(а):
Чем это можно сделать? Автоматически.
У Вас есть зависимость $U(\alpha)$, т. е. таблица, в первой колонке которой -- $\alpha$, а во второй -- $U(\alpha)$.

Дальше я бы взял половину этой таблицы, соответствующую одной ветке характеристики Вашего датчика, и пристроил к ней 3-ю колонку - $\cos \alpha$. Зависимость между значениями во втором и третьем столбцах таблицы -- это и есть та функцию, которую нам надо аппроксимировать.

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

У Вас аппроксимация где должна выполняться, прямо в приборе или снаружи?

-- Вт май 18, 2010 19:42:48 --

И ещё один момент.
Иногда не практике приходится снимать несколько кривых и их каким-то образом усреднять и/или тарировать каждый датчик индивидуально.
У Вас воспроизводимость выходной характеристики для одного датчика и от датчика к датчику хорошая?

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


03/04/10
47
Maslov в сообщении #321147 писал(а):
это и есть та функцию, которую нам надо аппроксимировать.

А, ну так я себе это и представлял.
Таблица сейчас создана, но занимает много памяти. У меня всего 430 байт осталось, пришлось ужимать, записывая данные как прибавку к предыдущему значению. В итоге каждое значение влезло в 8 бит против 24. Благо косинус всегда больше выходного значения. Но разрешение получается фиговое - линейная аппроксимация между точками (шаг 1 градус) приводит к дёрганьям станка. Повышеный износ подшипников и т.д. Надо не только память сэкономить, но и сделать выходной сигнал плавным.

Maslov в сообщении #321147 писал(а):
У Вас аппроксимация где должна выполняться, прямо в приборе или снаружи?

Да, прям в МК. Входит значение в АЦП, выходит через ЦАП. На ЦАП инт. RC цепочка для сглаживания. Но, естественно, рывки таблицы она не сгладит, а если её увеличивать, то датчик начинает тормозить.

Maslov в сообщении #321147 писал(а):
Тут всё определяется зашумлённостью данных и требуемой точностью.

Шумов почти нет. Зависит от ситуации, но обычно не более 5% от величины сигнала.

Maslov в сообщении #321147 писал(а):
У Вас воспроизводимость выходной характеристики для одного датчика и от датчика к датчику хорошая?

Да.

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


09/08/09
3438
С.Петербург
manu в сообщении #321313 писал(а):
Но разрешение получается фиговое - линейная аппроксимация между точками (шаг 1 градус) приводит к дёрганьям станка.
А квадратичную интерполяцию или сплайны нет возможности впихнуть?

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


03/04/10
47
Да можно попытаться, но я думал что будет проще каким-нибудь пакетом сгенерить функцию и огрубить до приемлемой точности.
Опять же, от таблицы в ПЗУ хочется избавиться.

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


17/10/08

1313
Если приведете таблицу, можно попытаться подобрать функцию с помощью генетического программирования. Кроме таблицы нужен перечень разрешенных операций (сложение, умножение и т.д.), примерная допустимая погрешность и примерный допустимый размер формулы (в операндах, штук).

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


03/04/10
47
Вот эксель со всеми графиками: http://narod.ru/disk/20937094000/FOV.zip.html (12 кБ).
Там выходная характеристика, косинус и их различие.
Ограничиться можно пределом в 70 градусов, чтобы с "подъёмами" не возиться.
Вычисления лучше ограничить арифметическими операциями (+-*/). На край корень и возведение в степень (хотя это равнозначно умножению). Тригонометрия и т.п. не имеют смысла - выигрыша в скорости не будет. Но если без них совсем никак, можно попытаться. Всё равно надо с чего-то начинать, а потом уже упрощать/удешевлять. Контроллеров сейчас много разных, в том числе и "числогрызов" DSP.
По числу операндов, насколько понимаю, получится нечто вроде ряда? А значит удалением элементов можно упрощать формулу за счёт потери точности, так? Ну так пусть будет большая, обрезать всегда можно.
Тут однозначно сказать трудно, сколько операндов. Надо конкретно у компилятора спрашивать, во сколько тактов он уложит эту формулу. И колдовать, сводя деления к сдвигам и т.п., можно, повышая производительность. Так что тут заранее не скажешь...
Погрешность в 5% устроит.

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


09/08/09
3438
С.Петербург
manu в сообщении #321313 писал(а):
Но разрешение получается фиговое - линейная аппроксимация между точками (шаг 1 градус) приводит к дёрганьям станка.
Если по Вашим данным построить график зависимости $\cos(\alpha) = F(U(\alpha))$, то получается вполне себе гладкая кривая,
Изображение
и по картинке непохоже, что линейная интерполяция между узлами может привести к существенным погрешностям. У Вас точно именно линейная интерполяция используется, а не ступеньки?

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


03/04/10
47
Maslov в сообщении #321982 писал(а):
Если по Вашим данным построить график зависимости , то получается вполне себе гладкая кривая,

Простите за глупый вопрос (весь день в отладке), но что эта кривая означает с практической точки зрения?..

Maslov в сообщении #321982 писал(а):
У Вас точно именно линейная интерполяция используется, а не ступеньки?

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

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

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



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

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


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

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