Краевой эффект на пути к ГРААЛЮ - страница 2

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

Применял вейвлеты Добеши. Вроде говорят, что вейвлеты Мейера менее подвержены краевым эффектам, но пока не пробовал.

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

А матлабовские какие вейвлеты? Ни разу просто в матлабе не работал.

Разложения всмысле полиномы? Насколько успешно получилось?

 
Desperado писал(а) >>

Пересечение уровней дает не очень привлекательный результат. Мне это тоже приходило в голову.

В индикаторе распределение максимумов и минимумов подчиняется гаусовскому закону, только с разным МО.

У максимумов примерно 0.3, у минимумов -0.3.

Чем выше планка, тем достовернее сигналы и тем их меньше.

А зарабатывать 200 пунктов в месяц не интересно :)

Да, к сожалению, либо искажения либо запаздывания.

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

 
Desperado, матлабовские любые которые есть в матлабовском тулбоксе по вейвлетам. Можно и нужные разложения получить и детализацию и аппроксимацию. Пишется М функция, потом переходная длл, и подключается через длл к мт. Помоему майера тоже есть, а может нет, чет уже не помню. Но время на програмировании сэкономить можно, хотя я подолбался тогда с переводом матлабовских матрикс в обычные переменные и обратно. Пробовал переписывать на с++ известную библиотеку по добеши писанную на дельфи (в нете много где есть). Так там сильнейшие краевые искажения были. А вот в матлабе такого нет, хотя кривит тоже (крючки любит по краям рисовать при тренде). Попробуйте просто в матлабе построить нужный вейвлет, если понравится результат то подключить можно через длл  к мт.
 
vladevgeniy писал(а) >>
Desperado, матлабовские любые которые есть в матлабовском тулбоксе по вейвлетам. Можно и нужные разложения получить и детализацию и аппроксимацию. Пишется М функция, потом переходная длл, и подключается через длл к мт. Помоему майера тоже есть, а может нет, чет уже не помню. Но время на програмировании сэкономить можно, хотя я подолбался тогда с переводом матлабовских матрикс в обычные переменные и обратно. Пробовал переписывать на с++ известную библиотеку по добеши писанную на дельфи (в нете много где есть). Так там сильнейшие краевые искажения были. А вот в матлабе такого нет, хотя кривит тоже (крючки любит по краям рисовать при тренде). Попробуйте просто в матлабе построить нужный вейвлет, если понравится результат то подключить можно через длл к мт.

Спасибо большое. Собственно, делфовую я и использовал :) Только там модуль был, я ее в библиотечку переработал.

Попробую найти Матлаб сначала.

 
infinum13 писал(а) >>

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

Попробовал Ваш алгоритм. Как и предполагалось в принципе, он удалет мелкий шум. Он хорошо работает при мелких периодах и больших ТФ.

Посмотрю, может что-нибудь придумаю с ним.

Его результат показан красной линией. А мне нужно что-то вроде зеленой линии.

 

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

 Последний матлаб лежит на торренте почти 4 гига.)))) Лучше им ползоваться. Проверил и длл нормально компилит и стыкуется хорошо. 

 

Из статьи во вложении:

Our application - prediction - points to the critical importance for us of the final values. Our time series is finite, and values n, n-1, n-2, ..., are of greatest interest for us. Any symmetric wavelet function is problematic for the handling of such a boundary (or edge). We also cannot use wavelet coefficients if these coefficients have been calculated from "future" data values. An asymmetric filter can allow us to get around this problem. Such a wavelet function can deal properly with the edge of importance to us. The first values of our time series, which also constitute a boundary, may be arbitrarily treated as a result, but this is of no practical consequence.

Несимметричная функция, как я понял, строится только на предыдущих значениях временного ряда.

Симметричная - на прошлых и будущих. Например, вот из алгоритма CDF 9/7:

// Predict 1

a=-1.586134342;

for (i=1; i<n-2; i+=2) {

x[n-1]+=2*a*x[n-2];

}

x[i]+=a*(x[i-1]+x[i+1]);

Краевые эффекты последняя строка создает.

По статье, кстати, индюк написал:

Здесь каждый вейвлет коэффициент рассчитан только на предыдущих значениях ряда.

Можно конечно выровнять:

Неизвестную область симметричные функции и заполняют чем-то вроде x[n-1]+=2*a*x[n-2]

По идее она перерисовывается.

Кому интересно поиграться, индюк здесь.

Файлы:
 
vladevgeniy писал(а) >>

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

Последний матлаб лежит на торренте почти 4 гига.)))) Лучше им ползоваться. Проверил и длл нормально компилит и стыкуется хорошо.

Прошу прощения за вопрос в стиле РТФМ, но не могли бы Вы в двух словах описать,

как создать ДЛЛ в МатЛабе и вызвать ее из МТ4?

Если можно, то с примером.

 

 Эх с пару месяцев назад бы в легкую. Щас чет уже подзабыл. Но в матлабе по стандарту, в хелпе есть описание. Вообще в матлабе очень качественный хелп. Посмотрите там не сложно, после компиляции создается длл и либ файл и еще несколько менее значимых. В м файле у вас будет функция на языке матлаба, из промежуточной длл вызывается эта функция. Там только надо вызвать сперва инициализацию, ну в хелпе это есть. Но, есть одно но. Надо обычние сишные переменные double string и тд перегнать в mxArray, затем вызвать функцию матлаба и затем назад в сишные.

пример работы с mxArray в С

mxArray *inm = mxCreateDoubleMatrix(1,size,mxREAL);    создается переменная mxArray размером size под входной массив
memcpy(mxGetPr(inm), &in[0], size*sizeof(double));         заполняется переменными из входного массива

далее вызывается функция матлаба

затем выходной массив из mxArray преобразуется в доубле

// ---------------------- Перевод mxArray в double ------
memcpy(out, mxGetPr(outm), size*sizeof(double));


примерно так, точнее щас сложно вспомнить.

инклюдники для работы с mxArray 

#include "mex.h"

лежат в папке с матлабом