Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение постоянной времени экспоненты
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
condor
Имеется выборка длинной ~1000 точек с зашумленным сигналом вида f(t)=exp(-at)+b. Необходимо определить а и желательно без использования итеративных алгоритмов.
Насколько я понял, наиболее часто используют логарифмирование сигнала с последующим применением метода наименьших квадратов. Но при этом надо избавиться от смещения b.
Может есть еще способы не очень чувствительные к шумам?
Посоветуйте, пожалуйста, литературу по данной теме.
Stanislav
Цитата(condor @ Apr 24 2008, 12:15) *
Имеется выборка длинной ~1000 точек с зашумленным сигналом вида f(t)=exp(-at)+b. Необходимо определить а и желательно без использования итеративных алгоритмов.
Насколько я понял, наиболее часто используют логарифмирование сигнала с последующим применением метода наименьших квадратов. Но при этом надо избавиться от смещения b.
Может есть еще способы не очень чувствительные к шумам?
Посоветуйте, пожалуйста, литературу по данной теме.
Логарифмировать не нужно, и, более того, вредно, т.к. аддитивный шум перестаёт быть таковым.
Возьмите Матлаб, Curve Fitting Toolbox. Почитайте к нему Help. Затем запустите GUI, выберите двух-термовую экспоненциальную модель и "фитните" Вашу функцию. Всё. smile.gif
Как именно это делается - написано в хэлпе, а все функции данного тулбокса даны в исходниках, разобравшись в которых, можно написать собственную программу (а можно и сгенерить С-шный исходник автоматически, только код будет довольно кривой).
Кроме того, рекомендую ознакомиться с методом наименьших квадратов как таковым. Найти его описание можно в любой книге по статистике.
condor
Цитата(Stanislav @ Apr 24 2008, 12:47) *
Логарифмировать не нужно, и, более того, вредно, т.к. аддитивный шум перестаёт быть таковым.
Возьмите Матлаб, Curve Fitting Toolbox. Почитайте к нему Help. Затем запустите GUI, выберите двух-термовую экспоненциальную модель и "фитните" Вашу функцию. Всё. smile.gif
Как именно это делается - написано в хэлпе, а все функции данного тулбокса даны в исходниках, разобравшись в которых, можно написать собственную программу (а можно и сгенерить С-шный исходник автоматически, только код будет довольно кривой).
Кроме того, рекомендую ознакомиться с методом наименьших квадратов как таковым. Найти его описание можно в любой книге по статистике.

Почитал, запустил, фитнул, увидел, что для фиттинга используется оптимизация и все smile.gif
Дальше не углублялся, так как сомневаюсь, что какой-нибудь метод оптимизации сможет работать на ARM7 в реальном времени. Необходимо выдать результат максимум за 5мс, а желательно за 2мс.

P.S.: С методом наименьших квадратов хорошо знаком. О методах оптимизации тоже имею представлениеsmile.gif
Tanya
Цитата(condor @ Apr 24 2008, 12:15) *
Имеется выборка длинной ~1000 точек с зашумленным сигналом вида f(t)=exp(-at)+b. Необходимо определить а и желательно без использования итеративных алгоритмов.
Насколько я понял, наиболее часто используют логарифмирование сигнала с последующим применением метода наименьших квадратов. Но при этом надо избавиться от смещения b.
Может есть еще способы не очень чувствительные к шумам?
Посоветуйте, пожалуйста, литературу по данной теме.

А коэффициент перед экспонентой точно равен 1?
Такие задачи лучше всего разбить (в данном случае это можно) на линейную часть и нелинейную, которые оптимизировать, соответственно, разными алгоритмами. Нелинейный (оптимальный по скорости) алгоритм будет зависеть от диапазона изменения аргумента экспоненты. Но всегда останется проблема точности нахождения параметров подгонки. Это, скорее всего, и не впишется в Ваши миллисекунды. И еще... минимизация абсоютных отклонений или относительных.. Вам нужно?
Stanislav
Цитата(condor @ Apr 25 2008, 02:40) *
Почитал, запустил, фитнул, увидел, что для фиттинга используется оптимизация и все smile.gif
Дальше не углублялся, так как сомневаюсь, что какой-нибудь метод оптимизации сможет работать на ARM7 в реальном времени. Необходимо выдать результат максимум за 5мс, а желательно за 2мс.
Тогда не совсем понятно, что подразумевается под "определением постоянной времени экспоненты"?
ARM7, конечно, для таких задач плохо приспособлен. Однако, сомневаться в том, что "что какой-нибудь метод оптимизации сможет работать на ARM7 в реальном времени" также преждевременно. Всё зависит от того, какой результат Вы хотите получить.

Цитата(condor @ Apr 25 2008, 02:40) *
P.S.: С методом наименьших квадратов хорошо знаком. О методах оптимизации тоже имею представлениеsmile.gif
Простите, если так. Посоветовал "на всякий случай". smile.gif

ЗЫ. Если не трудно, выложите несколько реализаций процесса, с разными параметрами a и b. А также огласите допустимую погрешность определения a.
TSerg
Цитата(condor @ Apr 24 2008, 12:15) *
Имеется выборка длинной ~1000 точек с зашумленным сигналом вида f(t)=exp(-at)+b. Необходимо определить а и желательно без использования итеративных алгоритмов.
Насколько я понял, наиболее часто используют логарифмирование сигнала с последующим применением метода наименьших квадратов. Но при этом надо избавиться от смещения b.
Может есть еще способы не очень чувствительные к шумам?
Посоветуйте, пожалуйста, литературу по данной теме.


Двухпараметрическая регрессия на основе лианеризации и МНК имеет место в практике.
Некоторые эффекты от ее применения Stanislav изложил выше.

Еще одним способом является моделирование линейной системы в виде АРСС-модели (ARIMA).
Для экспоненты вероятно достаточно СС-модели.
Почитать Бокс и Дженкинс.
Сложность реализации достаточно высока.
Ulysses
Цитата(condor @ Apr 24 2008, 11:15) *
Имеется выборка длинной ~1000 точек с зашумленным сигналом вида f(t)=exp(-at)+b. Необходимо определить а и желательно без использования итеративных алгоритмов.

Строим новую вспомагательную последовательность в виде разности значений в соседних точках. Эта последовательность не имеет смещение b, но имеет тот же показатель экспоненты. Если есть отрицательные значения, то заменяем их на очень малые положительные значения. К прологарифмированным данным применяем метод наименьших квадратов с взвешиванием самими данными до логарифмирования. Смещение b можно найти после вычитания найденной экспоненциальной функции.
Для суммы нескольких экспонент наиболее адекватным является метод Прони, применение которого для экспоненциально затухающих синусоид приведено, например, в книге Марпла.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.