Как правильно сгладить ломаную линию буфера в цикле?
Привет, Владимир!
Правильно будет сгладить ломаную линию без цикла, используя массив для записи значений по кругу. Размер массива равен периоду усреднения. Сумма в текущем элементе - это актуальная сумма последних значений. Просто делим эту сумму на период усреднения, и всё. При таком способе усреднения время выполнения кода не зависит от периода усреднения, то есть всё летает. Примерно так:
inputint period=5;
struct My
{
datetime time;
double value;
double sum;
My(){time=0; value=0; sum=0;}
} my[];
//текущий индекс массива структурint index=0;
double average=0;
intOnInit()
{
if(period<=0)
{
printf("аай-я-яй");
return(INIT_FAILED);
}
ArrayResize(my,period);
return(INIT_SUCCEEDED);
}
intOnCalculate(...)
{
.......
if(my[index].time!=time[i])
{
//следующий индекс в круговом массиве
index++;
if(index>period-1) index=0;
my[index].time=time[i];
//текущее значение будем добавлять в сумму, а затираемое значение будем вычитать из суммы
my[index].sum+=buffer[i]-my[index].value;
my[index].value=buffer[i];
//усреднённое значение
average=my[index].sum/period;
}
.........
return(rates_total);
}
Вначале, пока массив не заполнится, нули в массиве будут портить картину усреднения. Можно сделать проверку, если понадобится.
Прочитал.
Bloomberg назвал самые богатые семьи мира
В их числе — владельцы Walmart, Mars, Koch Industries и Hermes. За год совокупное состояние богатейших семей выросло на 22%
На одежде и питании люди заработали больше чем на нефти.
На $1,7 трлн перетекли деньги из карманов простых и не простых граждан в карман семей.
Если все магазины перейдут в руки семей, то покупателей станет меньше.
Это не новость
Это не новость
Картинка правильная. Социальное распределение не правильное. Это тупик. Из него нужен выход. Уже подошли к этому моменту.
По многочисленным просьбам рассказать о моей системе волн, создал небольшой ознакомительный блог. Статью мне лень писать.
Кому интересно можете заглянуть в блог. Ссылка как понимаете в профиле.
В блоге отвечу на ваши вопросы, что бы тут не вызывать раздражения у модераторов.)
Картинка правильная. Социальное распределение не правильное. Это тупик. Из него нужен выход. Уже подошли к этому моменту.
Не совсем правильная:
Не совсем правильная:
А как же, скажем, наёмные работники берут взятки и имеют активы или жулики разных мастей не работают а имеют активы???
Надо им выделить категорию.
А как же, скажем, наёмные работники берут взятки и имеют активы или жулики разных мастей не работают а имеют активы???
Надо им выделить категорию.
В тюряге им категорию надо выделить.
Есть вопрос к опытным прогерам.
Как правильно сгладить ломаную линию буфера в цикле? Буду благодарен за разные варианты.
Есть вопрос к опытным прогерам.
Как правильно сгладить ломаную линию буфера в цикле? Буду благодарен за разные варианты.
Машка по точкам перелома
А если мне интересно получить сгладывающею из трёх или пяти последних? Этот номер не совсем подходит. Есть еще какие варианты?
Как правильно сгладить ломаную линию буфера в цикле?
Привет, Владимир!
Правильно будет сгладить ломаную линию без цикла, используя массив для записи значений по кругу. Размер массива равен периоду усреднения. Сумма в текущем элементе - это актуальная сумма последних значений. Просто делим эту сумму на период усреднения, и всё. При таком способе усреднения время выполнения кода не зависит от периода усреднения, то есть всё летает. Примерно так:
Вначале, пока массив не заполнится, нули в массиве будут портить картину усреднения. Можно сделать проверку, если понадобится.