時間序列演算法的改善

2021-07-09 02:46:23 字數 1581 閱讀 4787

改善:

1、對原影象進行二次中位數濾波

2、對得到的關鍵點影象進行轉折點濾波

#include "iostream"

#include "set"

#include "cmath"

#include "iterator"

#include "fstream"

#include "vector"

#include "cstring"

using

namespace

std;

double *x; //資料

double *m; //中位數

int n;

set ie; //極值點初始集合,儲存資料的下標

set t; //轉折點集合,儲存資料的下標

set e; //去除ie中噪音中極值點集合,儲存資料下標

vector

k; //集合t、e的並集,儲存資料下標

void mid() //中值濾波

m[n] = x[n];

}void kpsegmentation(double error, double maxtime)

if(fabs( x[i] - ((x[i+1]+x[i-1])/2) ) > error)

}e.insert(1); //第乙個資料放入極值點集合

set::iterator it1;

set::iterator it2;

it1 = it2 = ie.begin();

it2++;

while(it2 != ie.end())

it1++;

it2++;

}set

::iterator it;

it = t.begin();

while(it != t.end()) //合併集合e, t

}vector

key; //儲存濾波後的關鍵點下標

int main()

mid();

memcpy(x, m, sizeof(double)*(n+1));

mid();

for(i=1; i<=n; i++)

kpsegmentation(error, maxtime);

double error1 = 7;

set:: iterator it1, it2, it3;

it1 = it2 = it3 = e.begin();

it2++;

it3++; it3++;

key.push_back(*it1);

while(it3 != e.end()) //對關鍵點濾波

it1++;

it2++;

it3++;

}key.push_back(*it2);

for(i=0; i" "

<< x[key[i]] << "\n";

fout1 << key[i] << endl;

fout2 << x[key[i]] << endl;

}return

0;}

常用的時間序列演算法模型

時間序列中常用 技術 乙個時間序列是一組對於某一變數連續時間點或連續時段上的觀測值。1.移動平均法 ma 1.1.簡單移動平均法 設有一時間序列y1,y2,則按資料點的順序逐點推移求出n個數的平均數,即可得到一次移動平均數.1.2 趨勢移動平均法 當時間序列沒有明顯的趨勢變動時,使用一次移動平均就能...

遞迴演算法時間複雜度分析與改善

遞迴演算法大家都不陌生,當須要反覆計算同樣問題時,一般能夠選擇遞迴和迴圈兩種演算法。又由於遞迴實現起來 比較簡潔。所以通常都會使用遞迴來解決上述問題。比方斐波那契數列。再比方樹的前序 中序 興許遍歷演算法。遞迴演算法儘管是有 簡潔這個長處,可是其缺點顯著。由於遞迴函式是在執行過程中呼叫其自身,所以會...

時間序列分析演算法學習筆記

arima模型是時間序列分析中應用最廣泛的模型之一,arima p,d,q 由三個部分組成 ar p ar是autoregressive的縮寫,表示自回歸模型。含義是當前時間點的值等於過去若干個時間點的回歸 因為不依賴與別的解釋變數,只依賴於自己過去的歷史值,故稱為自回歸 如果依賴過去最近的p個歷史...