|
|
  |
Определение постоянной времени экспоненты |
|
|
|
Apr 24 2008, 09:47
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

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

Частый гость
 
Группа: Свой
Сообщений: 93
Регистрация: 18-06-05
Из: Kyiv, Ukraine
Пользователь №: 6 126

|
Цитата(Stanislav @ Apr 24 2008, 12:47)  Логарифмировать не нужно, и, более того, вредно, т.к. аддитивный шум перестаёт быть таковым. Возьмите Матлаб, Curve Fitting Toolbox. Почитайте к нему Help. Затем запустите GUI, выберите двух-термовую экспоненциальную модель и "фитните" Вашу функцию. Всё. Как именно это делается - написано в хэлпе, а все функции данного тулбокса даны в исходниках, разобравшись в которых, можно написать собственную программу (а можно и сгенерить С-шный исходник автоматически, только код будет довольно кривой). Кроме того, рекомендую ознакомиться с методом наименьших квадратов как таковым. Найти его описание можно в любой книге по статистике. Почитал, запустил, фитнул, увидел, что для фиттинга используется оптимизация и все  Дальше не углублялся, так как сомневаюсь, что какой-нибудь метод оптимизации сможет работать на ARM7 в реальном времени. Необходимо выдать результат максимум за 5мс, а желательно за 2мс. P.S.: С методом наименьших квадратов хорошо знаком. О методах оптимизации тоже имею представление
|
|
|
|
|
Apr 25 2008, 02:26
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

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

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(condor @ Apr 25 2008, 02:40)  Почитал, запустил, фитнул, увидел, что для фиттинга используется оптимизация и все  Дальше не углублялся, так как сомневаюсь, что какой-нибудь метод оптимизации сможет работать на ARM7 в реальном времени. Необходимо выдать результат максимум за 5мс, а желательно за 2мс. Тогда не совсем понятно, что подразумевается под "определением постоянной времени экспоненты"? ARM7, конечно, для таких задач плохо приспособлен. Однако, сомневаться в том, что "что какой-нибудь метод оптимизации сможет работать на ARM7 в реальном времени" также преждевременно. Всё зависит от того, какой результат Вы хотите получить. Цитата(condor @ Apr 25 2008, 02:40)  P.S.: С методом наименьших квадратов хорошо знаком. О методах оптимизации тоже имею представление  Простите, если так. Посоветовал "на всякий случай".  ЗЫ. Если не трудно, выложите несколько реализаций процесса, с разными параметрами a и b. А также огласите допустимую погрешность определения a.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
Guest_TSerg_*
|
Apr 25 2008, 06:29
|
Guests

|
Цитата(condor @ Apr 24 2008, 12:15)  Имеется выборка длинной ~1000 точек с зашумленным сигналом вида f(t)=exp(-at)+b. Необходимо определить а и желательно без использования итеративных алгоритмов. Насколько я понял, наиболее часто используют логарифмирование сигнала с последующим применением метода наименьших квадратов. Но при этом надо избавиться от смещения b. Может есть еще способы не очень чувствительные к шумам? Посоветуйте, пожалуйста, литературу по данной теме. Двухпараметрическая регрессия на основе лианеризации и МНК имеет место в практике. Некоторые эффекты от ее применения Stanislav изложил выше. Еще одним способом является моделирование линейной системы в виде АРСС-модели (ARIMA). Для экспоненты вероятно достаточно СС-модели. Почитать Бокс и Дженкинс. Сложность реализации достаточно высока.
|
|
|
|
|
May 5 2008, 14:47
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 15-10-07
Из: Ιθάκη
Пользователь №: 31 371

|
Цитата(condor @ Apr 24 2008, 11:15)  Имеется выборка длинной ~1000 точек с зашумленным сигналом вида f(t)=exp(-at)+b. Необходимо определить а и желательно без использования итеративных алгоритмов. Строим новую вспомагательную последовательность в виде разности значений в соседних точках. Эта последовательность не имеет смещение b, но имеет тот же показатель экспоненты. Если есть отрицательные значения, то заменяем их на очень малые положительные значения. К прологарифмированным данным применяем метод наименьших квадратов с взвешиванием самими данными до логарифмирования. Смещение b можно найти после вычитания найденной экспоненциальной функции. Для суммы нескольких экспонент наиболее адекватным является метод Прони, применение которого для экспоненциально затухающих синусоид приведено, например, в книге Марпла.
Сообщение отредактировал Ulysses - May 5 2008, 14:50
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|