|
нужен алгоритм нахождения максимума, простой с апроксимацией для МК! |
|
|
|
 |
Ответов
|
Jun 20 2005, 07:20
|
Участник

Группа: Свой
Сообщений: 19
Регистрация: 12-04-05
Из: Таганрог, Ростовской обл.
Пользователь №: 4 048

|
Цитата(arttab @ Jun 19 2005, 17:28) если функция известна, то через производную можно найти максимумы. а иначе апроксимировать по известным значениям.... может, кто чтонибудь оригинальное предложит? Оригинальней ничего не надо. Задача самодостаточна. По четырём точкам можно найти однозначную апроксимацию участка кривой полиномом третьей степени x(t) = a*t*t*t + b*t*t + c*t*t + d*t + e; Производную полинома приравниваем к нулю и вуаля - результат. Полином третьей степени имеет хорошую устойчивость в силу своей простоты, а решение по четырём точкам однозначно - это тоже больщое преимущество.
|
|
|
|
|
Jun 21 2005, 07:56
|
Местный
  
Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839

|
Цитата(Eugeno @ Jun 20 2005, 10:20) По четырём точкам... полиномом третьей степени x(t) = a*t*t*t + b*t*t + c*t*t + d*t + e... Производную полинома приравниваем к нулю и вуаля - результат. Полином к нулю приравнять, конечно, хорошо, только как решать на МК это дело? Предлагаю итеративный вариант на базе интерполятора степени N (пусть N=4), например Лагранжа. вначале находим максимальный отсчет в регистре, затем 1. выбираем второй "опорный" справа или слева от максимума (который больше). Точный максимум будет расположен в интервале между двумя этими отсчетами. 2. Делим интервал пополам, вычисляем посредством интерполяции значение функции в данной точке. 3. Измеряем дельту, как разность максимума и вычисл. значения 4. Если дельта со знаком " - ", то значение функции в точке больше, чем максимум, тогда [максимум = значение функции в точке] 5. Устанавливаем новые границы интервала, соотв. одна - максимуму, вторая - "опорному" отсчету. 6. Если [дельта < ПОРОГ] - или [итерация < ITERmax] - выход, иначе идти к 1. Не очень просто, но работает, причем хорошо. проблема насущная, сам бы хотел услышать мнение сторонних разработчиков
|
|
|
|
|
Jun 23 2005, 04:41
|

Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828

|
Цитата(Fast @ Jun 21 2005, 10:56) 1. выбираем второй "опорный" справа или слева от максимума (который больше). Точный максимум будет расположен в интервале между двумя этими отсчетами. 2. Делим интервал пополам, вычисляем посредством интерполяции значение функции в данной точке. 3. Измеряем дельту, как разность максимума и вычисл. значения 4. Если дельта со знаком " - ", то значение функции в точке больше, чем максимум, тогда [максимум = значение функции в точке] 5. Устанавливаем новые границы интервала, соотв. одна - максимуму, вторая - "опорному" отсчету. 6. Если [дельта < ПОРОГ] - или [итерация < ITERmax] - выход, иначе идти к 1. Не очень просто, но работает, причем хорошо. проблема насущная, сам бы хотел услышать мнение сторонних разработчиков Можно подробнее по п.2 - Как интерполировать (функция неизвестна, можно предположить, что она sinc)? Желательно расписать для меня чайника!
|
|
|
|
|
Jun 23 2005, 22:32
|
Частый гость
 
Группа: Свой
Сообщений: 78
Регистрация: 25-03-05
Из: Минск
Пользователь №: 3 693

|
Цитата(Make_Pic @ Jun 23 2005, 07:41) Можно подробнее по п.2 - Как интерполировать (функция неизвестна, можно предположить, что она sinc)? Желательно расписать для меня чайника! To Make_Pic, Интерполировать функцию нужно исходя из физического смысла сигнала, который мы снимаем. Иначе смысл и ценность от этой интерполяции??? Т.к. насколько я понял сигнал речевой, то нужно примерно представлять, какому закону распределяется его спектральная плотность. А этого я не знаю  (здесь я не силен, но смею предположить, нечто подобное на распределение Гаусса с нарушением симметрии). To Fast, интерполирование по двум точкам – крайне не благодарная задача. См. рисунок от Alexander, оставив только две точки  А для чайников  исходя из предложенного Fast с использованием интерполяционного полинома Лагранжа второй степени следующий алгоритм без всяких циклов. п.1 Выбираем максимум функции (x1,y1) и берем две соседние точки (x0,y0) и (x1,y2), так чтобы выполнялись условия x0<x1<x2, и y1>=y0, и y1>=y2. п.2 Находим точку экстремума (формула 3) п.3 Подставляем найденное значение в полином (формула 1) п.4 Полученное значение и есть максимум. P.S. Можно уменьшить объем вычислений, введя промежуточные переменные типа dx01=x0-x1 для формул 1 и 2. На рис. представлены формулы, записанные в Maple.
Сообщение отредактировал mikola1 - Jun 24 2005, 21:45
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 24 2005, 04:09
|

Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828

|
Цитата(mikola1 @ Jun 24 2005, 01:32) Цитата(Make_Pic @ Jun 23 2005, 07:41) Можно подробнее по п.2 - Как интерполировать (функция неизвестна, можно предположить, что она sinc)? Желательно расписать для меня чайника! To Make_Pic, Интерполировать функцию нужно исходя из физического смысла сигнала, который мы снимаем. Иначе смысл и ценность от этой интерполяции??? Т.к. насколько я понял сигнал речевой, то нужно примерно представлять, какому закону распределяется его спектральная плотность. А этого я не знаю  (здесь я не силен, но смею предположить, нечто подобное на распределение Гаусса с нарушением симметрии). Я вроде выше писал, что сигнал - синус/частота, посему симетричный гаусс, дык как интерполировать - КТО-НИБУДЬ ПОДСКАЖЕТ???
|
|
|
|
Сообщений в этой теме
Make_Pic нужен алгоритм нахождения максимума Jun 19 2005, 06:16   Alexandr Цитата(Fast @ Jun 21 2005, 11:56)
1. ... Jun 21 2005, 08:49    Fast [quote=Alexandr,Jun 21 2005, 11:49]
Производная и ... Jun 21 2005, 09:25     Make_Pic
На входе устройства две частоты речевого диапозо... Jun 21 2005, 16:08      Fast Цитата(Make_Pic @ Jun 21 2005, 19:08)На входе... Jun 22 2005, 04:24       Make_Pic Цитата(Fast @ Jun 22 2005, 07:24)Цитата(Make_... Jun 22 2005, 04:33      Make_Pic Кстати на телесистемах некий alostap предложил ори... Jun 24 2005, 04:20     Fast Цитата(mikola1 @ Jun 24 2005, 01:32)To Fast, ... Jun 24 2005, 12:33 Vic Цитата(Make_Pic @ Jun 19 2005, 09:16)Имеем 4 ... Jun 19 2005, 16:55 mikola1 Цитата(Make_Pic @ Jun 19 2005, 09:16)Имеем 4 ... Jun 21 2005, 06:31 Major Все же настоятельно рекомендую МНК, и посмотреть с... Jun 24 2005, 05:24 mikola1 Хочу извиниться перед Fast, я действительно неправ... Jun 24 2005, 21:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|