Подгонка кривой Гаусса к временному ряду в Matlab

У меня есть некоторые необработанные данные о вегетативных индексах места. Когда я наношу их на временной ряд, я получаю следующий результат:

введите здесь описание изображения

Теперь мы можем подобрать некоторую модель Гаусса, которая имеет вид

(C)MathWorks

Где «n» — количество терминов/гауссов. Matlab предоставляет такую ​​​​функциональность, но для максимального n = 8.

Итак, могу ли я получить помощь в том, как я могу использовать такие функции в Matlab?


person user3100148    schedule 13.12.2013    source источник


Ответы (1)


Есть веская причина, по которой Matalb останавливается на каком-то n. Подумайте об этом на секунду, посчитайте, сколько точек данных у вас есть на самом деле (скажем, 100), сколько свободных параметров вам действительно нужно для соответствия (3xn), поэтому, если вы хотите скажем 15 гауссианов, нужно как минимум 45 условий, добавьте шум и тот факт, что вам нужно несколько пикселей (больше 3) на гауссиан для работы фита, для этого требуется наверное больше пикселей, чем у вас есть и долгий процесс оптимизации. Конечно, если вы попытаетесь подогнать, вы все равно получите ответ, но он не будет надежным (мусор в мусоре) или однозначным.

Вот что я бы сделал: поскольку ширина Гаусса в ваших данных ограничена, скажем, 30 пикселями, я бы разделил данные на несколько частей (которые перекрываются хотя бы на несколько пикселей) и каждый раз пытался уместить меньшее число Гаусса. к каждому сегменту. Скажем, вы берете диапазон 0<x<30, затем 10<x<40 и т. д. и в каждом находите 3-4 гауссиана отдельно. Моя интуиция подсказывает, что так будет быстрее и надежнее.

Если вы все же хотите разместить их все сразу, вы можете использовать что-то например, этот fex файл...

person bla    schedule 13.12.2013