Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 9
1

Аппроксимация сигнала последовательностью линейных участков

14.03.2017, 04:53. Показов 1341. Ответов 13

Всем привет!

Есть некий сигнал, который похож на зашумленную последовательность линейных участков с разными наклонами. Нужна программа/команда, которая смогла бы зафитить этот сигнал как последовательность линейных участков. Задавать knots или breakpoints нет возможности в силу огромного количества сигналов, которые надо обработать. Гугление дает очень размытую картину. Похоже, что задача выбора точек, в которых заканчивается одна линия и начинается другая, весьма сложная. Может ли кто-нибудь что-то посоветовать?

Спасибо
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2017, 04:53
Ответы с готовыми решениями:

Аппроксимация участка биологического сигнала
Здравствуйте, имеется биологический сигнал (пульсовая волна фотоплетизмограммы), я знаю размах...

Оптимизация в пределах линейных участков - исключение лишних переменных
Необходимо произвести оптимизацию в пределах линейных участков (исключить лишние переменные). На...

Метод расширения спектра (сигнала) прямой последовательностью (РСПП)
Метод расширения спектра (сигнала) прямой последовательностью (РСПП). Делать по методу автором Смит...

Параллельное программирование: какую систему выгодней использовать для распараллеливания линейных участков?
Добрый день! Помогите пожалуйста ответить на вопрос . Какую систему выгодней использовать для...

13
503 / 410 / 43
Регистрация: 17.07.2013
Сообщений: 2,101
14.03.2017, 08:33 2
Берете первые 5 точек и фиксируете стат. х-ки регрессионного ур-ния. Добавляете еще одну точку и сравниваете полученные стат х-ки. Если они улучшаются, добавляете сл. точку и повторяете вычисления. Если ухудшаются, то фиксируете предидущую точку и пишите их в отдельный вектор. Первую прямую получили. Повторяем. Эффективность этого алгоритма проверена и во многом зависит от длины последовательности точек линейного участка, RSN и выбора стат х-тик.
1
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 9
15.03.2017, 00:28  [ТС] 3
Nick07,
Спасибо, вполне разумный подход. Чисто случайно, не знаете ли у Вы каких-нибудь статей, где обсуждается этот подход в плане выбора параметра и характеристик по которым оценивается насколько хорош текущий фит.
0
503 / 410 / 43
Регистрация: 17.07.2013
Сообщений: 2,101
15.03.2017, 08:47 4
Цитата Сообщение от NoFunNoGun Посмотреть сообщение
оценивается насколько хорош текущий фит.
По моему опыту, таких универсальных оценок быть не может. Все определяется задачей фитинга. Фит - это нЕкая математическая модель и какой процесс из исходного набора данных Вы хотите моделировать - знают только Всевышний и Вы. Как правило, фитингуют для уменьшения средн квадр откл., иногда главный критерий - точное положение/амплитуда некоторых "ключевых" точек и т.д.. Классический пример, который приводил студентам: при малых значениях Х синусоида отлично аппроксимируется линейной зависимостью. Вспомните задачки по дифракции где sin(Fi)=Fi
1
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 9
17.03.2017, 02:21  [ТС] 5
Nick07,

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

Пока я решил делать так:
1) Гипотеза 1 - в сигнале одна линия. Фитим с помощью МНК, считаем сумму наименьших квадратов (далее НК).
2) Гипотеза 2 - в сигнале две лини. Ставим точку разбиения в начале и двигаем ее через весь сигнал, считая сумму НК для линейного фиттинга с каждой стороны от этой точки. Когда весь сигнал просканирован, ставим точку там, где величина "сумма НК фита 1" + "сумма НК для фита 2" минимальна. (картинка 2)
3) Гипотеза 3 - в сигнале три линии. Берем уже разбитый на две линии предыдущей итерации сигнал. Делаем сканирование как в случае 2 для обоих половин, ставим новую точку
4) ... и так далее. Остановка будет сделана на шаге N, если сумма НК на следующем шаге перестает меняться (порог определю на глаз)

Надеюсь, не сильно много текста.
0
Миниатюры
Аппроксимация сигнала последовательностью линейных участков   Аппроксимация сигнала последовательностью линейных участков  
Модератор
1268 / 1169 / 355
Регистрация: 13.09.2015
Сообщений: 4,083
17.03.2017, 04:04 6
NoFunNoGun, при таком подходе, как у вас, очевидно, что чем больше прямых кусков, тем лучше приближение получится. В предельном случае каждый кусок будет соединять две соседние точки (как, собственно, Матлаб и строит графики). Если аппроксимировать, то брать тогда надо три точки. Такой результат вряд ли вам подойдёт. Поэтому нужно вводить дополнительные критерии: либо ограничивать количество прямых кусков, либо задавать среднеквадратичное отклонение, которое можно считать достаточным для приближения.
1
503 / 410 / 43
Регистрация: 17.07.2013
Сообщений: 2,101
17.03.2017, 09:09 7
Цитата Сообщение от NoFunNoGun Посмотреть сообщение
потому что модели процесса нет
Бессмысленная работа.
Пардон, а какой смысл тогда Ваших вычислений. Без понимания модели, возможно и ошибочной, все вышесказанное - это жонглирование цифирками или наукообразие. В моем понимании, наперсточники на рынке более корректны. там хоть никто не строит из себя лордов, т.е. не прикрывается матлабом.
0
317 / 256 / 30
Регистрация: 30.03.2013
Сообщений: 755
17.03.2017, 13:59 8
NoFunNoGun, а выложить данные можете ?
1
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 9
17.03.2017, 19:22  [ТС] 9
Nick07, Вы абсолютно правы. Но суть в том, что описывание модели на форуме не может изменить сигналы, которые я получаю. Для подтверждения правдивости моей гипотезы о модели, мне нужно сначала извлечь определенную информацию из сигнала, такую как примерные наклоны и длительности линейных участков сигнала.

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

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

Добавлено через 11 минут
Цитата Сообщение от Centurio Посмотреть сообщение
В предельном случае каждый кусок будет соединять две соседние точки
Абсолютно верно, поэтому я планирую вводить что-то вроде параметра tolerance, с условием, что если суммы наименьших квадратов с/без разбиения отличаются меньше чем на это значение, то разбивать не нужно.
0
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 9
17.03.2017, 19:49  [ТС] 10
sergsh,
Да, в приложении. На картинке снизу я от руки нарисовал, что примерно ожидается от фиттинга.
0
Миниатюры
Аппроксимация сигнала последовательностью линейных участков  
Вложения
Тип файла: txt A.txt (3.9 Кб, 8 просмотров)
503 / 410 / 43
Регистрация: 17.07.2013
Сообщений: 2,101
17.03.2017, 19:54 11
Цитата Сообщение от NoFunNoGun Посмотреть сообщение
Но суть в том, что описывание модели на форуме не может изменить сигналы, которые я получаю
Абсолютно с Вами согласен.
Цитата Сообщение от NoFunNoGun Посмотреть сообщение
просто придерживаться идеи, что модель заключается в том, что сигнал с некоторой непрерывной вероятностью переходит из состояние движения с одним наклоном в состояние движения с другим.
Вполне нормальная модель.

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

Добавлено через 2 минуты
Может данные надо отфильтровать?
0
317 / 256 / 30
Регистрация: 30.03.2013
Сообщений: 755
17.03.2017, 22:54 12
Посмотрел ваши данные, для них есть старый казацкий способ - нарисовать их с сдвигом.

Matlab M
1
figure, plot( A(1:end-2), A(3:end) ,'.-k'); % A - ваши данные
видно что есть три группы точек где нет выраженной тенденции к росту, и есть 2 небольшие группы точек явного роста.
Это такой полуручной способ анализа, но вполне наглядный.
1
Миниатюры
Аппроксимация сигнала последовательностью линейных участков  
503 / 410 / 43
Регистрация: 17.07.2013
Сообщений: 2,101
17.03.2017, 22:59 13
Цитата Сообщение от sergsh Посмотреть сообщение
нарисовать их с сдвигом
+++
0
503 / 410 / 43
Регистрация: 17.07.2013
Сообщений: 2,101
21.03.2017, 18:34 14
Примените эту функция и все прояснится:
errorbar
Может быть некоторые/все точки в пределах погрешности лежат на одной прямой.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2017, 18:34

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Аппроксимация сигнала до N гармоник
Добрый день. Не подскажите что это за зверь такой и как его делать? Что-то начитавшись умных слов в...

Аппроксимация функций. Сглаживание опытных данных методом наименьших квадратов и решение системы линейных уравнений методом Гаусса
Нужна помощь:wall:, пишу программу аппроксимация функций. Сглаживание опытных данных методом...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.