реклама на сайте
подробности

 
 
> Апроксимация сплайнами, оптимизация размещения контрольных точек
ataradov
сообщение Jan 23 2011, 13:26
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Эта тема является логическим продолжением вот этой, но может быть интересна и сама по себе, поэтому выношу в отдельный типик.

На картинках изображена характерная кривая (1 - общий план, 2 - приближенное начало), которую нужно представить сплайнами или любым другим способом, занчительно снижающим объем памяти, требуемый для ее хранения, но при этом допускающий сравнительно простое восстановление по точкам, не разжимя всей кривой сразу (то-есть запаковать ее ZIP-ом нельзя sm.gif ).

Проблема в автоматическом определении положения контрольных точек. Очевидно, что равномерное расположение не выгодно, так как в начале есть сильные осциляции, а в конце график почти прямой.

В идеале нужен алгоритм, который позволит по заданному числу контрольных точек определть их положение так, чтобы СКО было минимальным. Или наоборот, по заданному СКО определить требуемое число точек и их положение.

Есть еще одна небольшая проблема - данные немного зашумлены, отчего точное определение локальных экстремумов затруднено. Можно конечно его зафильтровать пока не получится приемлемый результат, но хотелось-бы этого избежать.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
igorchem
сообщение Mar 3 2011, 00:52
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-12-10
Пользователь №: 61 695



Цитата(Taradov Alexander @ Jan 23 2011, 14:26) *
В идеале нужен алгоритм, который позволит по заданному числу контрольных точек определть их положение так, чтобы СКО было минимальным. Или наоборот, по заданному СКО определить требуемое число точек и их положение.

Если Вам необходимо найти оптимальные распределения точек для сплайн аппроксимации k-ой степени в l2 норме, можно поступить так:
вначале аппроксимируете Вашу функцию сплайном k+2 степени s_{k+2}(x).
Далее ищите разбиение x_0 < ... < x_i < ... < x_n так, чтобы
\int_{x_i}^{x_{i+1}} \left(\frac{\delta^{k+1} s_{k+2}(x)}{\delta x^{k+1}}\right)^{\frac1{k+1}} dx было одинакого на всех отрезках. Если запутаетесь или не сможете сами, постораюсь формулы выложить, но, очень надеюсь, что сами справитесь.

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

Моя идея - запишите эти функции (n штук) вначале на очень мелкой сетке с кусочно-постоянными или кусочно-линейными базисными функциями, чтобы шаг такой сетки был существенно меньше минимальной осцилляции. У Вас будет n векторов, образуйте из них матрицу. Сделайте этой матрице сингулярное разложение и выбросьте все сингулярные вектора, сингулярные значения которых будут меньше точности оцифровки вашого сигнала. Примените то, что я описал к оставшимся левым сингулярным векторам. Есть большая уверенность, что после всего этого Вы сильно сожмете эти данные, распаковка их будет съедать только несколько операций на точку, да и шум Вы тоже погасите.

Сообщение отредактировал igorchem - Mar 3 2011, 09:37
Go to the top of the page
 
+Quote Post
Andrey_1
сообщение Mar 3 2011, 02:17
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 131
Регистрация: 30-11-10
Пользователь №: 61 268



Цитата(igorchem @ Mar 3 2011, 04:52) *
Если Вам необходимо найти оптимальные распределения точек для сплайн аппроксимации k-ой степени в l2 норме, можно поступить так:
вначале аппроксимируете Вашу функцию сплайном k+2 степени s_{k+2}(x).
Далее ищите разбиение x_0 < ... < x_i < ... < x_n так, чтобы
\int_{x_i}^{x_{i+1}} \left(\frac{\delta^{k+1} s_{k+2}(x)}{\delta x^{k+1}}\right)^{\frac1{k+1}} dx было одинакого на всех отрезках. Если запутаетесь или не сможете сами, постораюсь формулы выложить, но, очень надеюсь, что сами справитесь.

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

Моя идея - запишите эти функции (n штук) вначале на очень мелкой кусочно-постоянной или кусочно линейной сетке, чтобы шаг такой сетки был существенно меньше минимальной осцилляции. У Вас будет n векторов, образуйте из них матрицу. Сделайте этой матрице сингулярное разложение и выбросьте все сингулярные вектора, сингулярные значения которых будут меньше точности оцифровки вашого сигнала. Примените то, что я описал к оставшимся левым сингулярным векторам. Есть большая уверенность, что после всего этого Вы сильно сожмете эти данные, распаковка их будет съедать только несколько операций на точку, да и шум Вы тоже погасите.


help polyfit
POLYFIT Fit polynomial to data.
P = POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) of
degree N that fits the data Y best in a least-squares sense. P is a
row vector of length N+1 containing the polynomial coefficients in
descending powers, P(1)*X^N + P(2)*X^(N-1) +...+ P(N)*X + P(N+1).

[P,S] = POLYFIT(X,Y,N) returns the polynomial coefficients P and a
structure S for use with POLYVAL to obtain error estimates for
predictions. S contains fields for the triangular factor ® from a QR
decomposition of the Vandermonde matrix of X, the degrees of freedom
(df), and the norm of the residuals (normr). If the data Y are random,
an estimate of the covariance matrix of P is (Rinv*Rinv')*normr^2/df,
where Rinv is the inverse of R.

[P,S,MU] = POLYFIT(X,Y,N) finds the coefficients of a polynomial in
XHAT = (X-MU(1))/MU(2) where MU(1) = MEAN(X) and MU(2) = STD(X). This
centering and scaling transformation improves the numerical properties
of both the polynomial and the fitting algorithm.

Warning messages result if N is >= length(X), if X has repeated, or
nearly repeated, points, or if X might need centering and scaling.

Class support for inputs X,Y:
float: double, single

See also poly, polyval, roots, lscov.
Go to the top of the page
 
+Quote Post
igorchem
сообщение Mar 3 2011, 09:27
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 17-12-10
Пользователь №: 61 695



Цитата(Andrey_1 @ Mar 3 2011, 03:17) *
help polyfit
POLYFIT Fit polynomial to data.
...


Уважаемый Андрей,

очень хочу поинтересоваться смыслом Вашего ответа на мой топик, мне не понятно несколько моментов:

1. зачем копировать текст от матворкса без ссылки - Ваша копия получилась с не очень красивой визуализацией математических формул, поэтому, на мой вгляд, было бы правильннее дать ссылку на полифит, например так:
http://www.mathworks.com/help/techdoc/ref/polyfit.html

2. как полифит согласуется с вопросом топикстартера?

3. как полифит может быть ответом на мой текст об оптимальном разбиении сплайн-аппроксимации?

4. Вы хоть раз пробовали вписывать такие функции как у топикстартера в полиномы высоких степеней сами, и видели, какая ошибка хоть в l1, хоть в l2 или l_{\infty} получается не говоря об устойчивости такого вписывания? Если нет, то не советуйте то, что не знаете, а если да, очень рад буду от Вас увидеть такие результаты (мне даже достаточно ссылки на Вашу публикацию в нормальном цитируемом журнале), с радостью просвещусь Вашими знаниями!

С уважением

ИИ
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 3 2011, 09:39
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (igorchem @ Mar 3 2011, 12:27) *
очень хочу поинтересоваться смыслом Вашего ответа на мой топик, мне не понятно несколько моментов:


Не обращайте внимания, человек то-ли самоутверждается, то-ли посты копит для становления своим.

По теме: в формуле с помощью \delta - это обычная производная так странно записана или это какая-то особая производная?

Выбор числа k: при степенях полинома больше 10 получается уже не очень хорошо, много осциляций.

Каков физический смысл подинтегрального выражения?

Вообще исходную задачу удалось свести к хранению быстро меняющейся части и представления плавной части экспонентами, но исходный вопрос все-еще интересен.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Taradov Alexander   Апроксимация сплайнами   Jan 23 2011, 13:26
- - Tanya   Цитата(Taradov Alexander @ Jan 23 2011, 16...   Jan 23 2011, 14:12
|- - Taradov Alexander   QUOTE (Tanya @ Jan 23 2011, 17:12) Мне ка...   Jan 23 2011, 14:18
|- - Andrey_1   Цитата(Tanya @ Jan 23 2011, 18:12) Мне ка...   Jan 23 2011, 14:19
|- - Taradov Alexander   QUOTE (Andrey_1 @ Jan 23 2011, 17:19) Пос...   Jan 23 2011, 14:23
|- - Andrey_1   Цитата(Taradov Alexander @ Jan 23 2011, 18...   Jan 23 2011, 14:29
|- - Taradov Alexander   QUOTE (Andrey_1 @ Jan 23 2011, 17:29) Вам...   Jan 23 2011, 14:30
|- - Andrey_1   Цитата(Taradov Alexander @ Jan 23 2011, 17...   Jan 24 2011, 03:44
- - АНТОН КОЗЛОВ   Использование метода наименьших квадратов в подобн...   Jan 24 2011, 05:41
- - TSerg   Для Вашего случая моделировать надо не результат, ...   Jan 24 2011, 07:15
|- - Tanya   Цитата(TSerg @ Jan 24 2011, 10:15) Для Ва...   Jan 24 2011, 08:14
||- - Andrey_1   Цитата(Tanya @ Jan 24 2011, 12:14) Наверн...   Jan 26 2011, 00:51
|- - Taradov Alexander   QUOTE (TSerg @ Jan 24 2011, 10:15) Для Ва...   Jan 24 2011, 11:16
|- - Tanya   Цитата(Taradov Alexander @ Jan 24 2011, 14...   Jan 24 2011, 11:55
|- - Taradov Alexander   QUOTE (Tanya @ Jan 24 2011, 14:55) Вот и ...   Jan 24 2011, 12:04
|- - petrov   Цитата(Taradov Alexander @ Jan 24 2011, 15...   Jan 24 2011, 12:10
||- - Taradov Alexander   QUOTE (petrov @ Jan 24 2011, 15:10) А где...   Jan 24 2011, 12:31
||- - petrov   Цитата(Taradov Alexander @ Jan 24 2011, 15...   Jan 24 2011, 12:45
||- - Taradov Alexander   QUOTE (petrov @ Jan 24 2011, 15:45) Вот и...   Jan 24 2011, 14:12
|- - Tanya   Цитата(Taradov Alexander @ Jan 24 2011, 15...   Jan 24 2011, 14:35
|- - Taradov Alexander   QUOTE (Tanya @ Jan 24 2011, 17:35) Если е...   Jan 24 2011, 15:10
- - _Pasha   Обратите внимание, что регрессионный полином не об...   Jan 24 2011, 07:49
- - scifi   В порядке бреда: коль скоро это звуки (если я не о...   Jan 24 2011, 08:04
- - GetSmart   Цитата(Taradov Alexander @ Jan 23 2011, 18...   Jan 24 2011, 08:57
|- - _Pasha   Цитата(GetSmart @ Jan 24 2011, 12:57) Для...   Jan 24 2011, 09:10
- - petrov   Почему бы просто не использовать более высокую час...   Jan 24 2011, 11:45
|- - Taradov Alexander   QUOTE (petrov @ Jan 24 2011, 14:45) Почем...   Jan 24 2011, 11:55
|- - petrov   Цитата(Taradov Alexander @ Jan 24 2011, 14...   Jan 24 2011, 12:01
- - thermit   ЦитатаTaradov Alexander: Я так понимаю линейное пр...   Jan 24 2011, 14:29
|- - GetSmart   Цитата(thermit @ Jan 24 2011, 19:29) Что ...   Jan 24 2011, 14:31
- - thermit   ЦитатаGetSmart: Если это Фурье-коэффициенты, то им...   Jan 24 2011, 15:00
- - igorchem   Написал Вам ответ и прикрепил свой первый пост в ф...   Mar 3 2011, 10:35
- - Taradov Alexander   QUOTE (igorchem @ Mar 3 2011, 13:35) Напи...   Mar 3 2011, 10:54
- - igorchem   Цитата(Taradov Alexander @ Mar 3 2011, 11...   Mar 3 2011, 11:15


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.0157 секунд с 7
ELECTRONIX ©2004-2016