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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Апроксимация сплайнами, оптимизация размещения контрольных точек
Andrey_1
сообщение Jan 26 2011, 00:51
Сообщение #31


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

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



Цитата(Tanya @ Jan 24 2011, 12:14) *
Наверное, не только в этом случае. Если верить авторскому рисунку, кроме затухания происходит перенос энергии основной моды в гармоники. И обратно?

Это очень умная мысль - как раз такой "перенос" и возникает когда нет желания выполнять частотный анализ в режиме ZOOM - алаверды Бобу Рэндаллу Частотный Анализ 1989 год издание фирмы Брюль и Къер
Go to the top of the page
 
+Quote Post
igorchem
сообщение Mar 3 2011, 00:52
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #33


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

Группа: Участник
Сообщений: 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
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #35


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

Группа: Участник
Сообщений: 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
igorchem
сообщение Mar 3 2011, 10:35
Сообщение #36


Участник
*

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



Написал Вам ответ и прикрепил свой первый пост в файле

http://www.elegant-mathematics.com/electronix.pdf

через пару дней - уберу
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 3 2011, 10:54
Сообщение #37


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

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



QUOTE (igorchem @ Mar 3 2011, 13:35) *
Написал Вам ответ и прикрепил свой первый пост в файле
Спасибо, попробую разобраться.

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

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

Соотетственно затухающую часть можно не сжимать, а порсто заново восстанавливать при помощи простого банка фильтров. Получается естественно не 1:1 исходный графиг, но и фортепиано все звучат немного по-разнму, так что такое решение даже лучше простого сжатия.

Сложный харакер огибающей на приведенном графике обусловлен биениями хора струн (нота С4, 3 струны). Как именно в такой модели физично сделать биения я пока не знаю, но работаю над этим.
Go to the top of the page
 
+Quote Post
igorchem
сообщение Mar 3 2011, 11:15
Сообщение #38


Участник
*

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



Цитата(Taradov Alexander @ Mar 3 2011, 11:54) *
Решением диф. уравнения колебания жесткой струны является сумма гармоник, затухающих по экспонетам, где частоты гармоник и показатели экспонент зависят от физических параметров струны.

Соотетственно затухающую часть можно не сжимать, а порсто заново восстанавливать при помощи простого банка фильтров. Получается естественно не 1:1 исходный графиг, но и фортепиано все звучат немного по-разнму, так что такое решение даже лучше простого сжатия.

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

У Вас действительно стоит задача много (100 и более) схожих семплов саппроксимировать? Если да, попоробуйте сингулярное разложение. Реально поможет! Если есть трудности - пишите в личку, помогу
Go to the top of the page
 
+Quote Post

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

 


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


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