1、TDS
def deal_data1(INDEX,th):
T=100
x,y=time_change(INDEX)
total_len=len(y)
i=0
m=1
flag = 0 # 用於標記非冗餘數據的位置
result_data = [] # 最後去除冗餘數據的數據
temp_data = [] # 臨時存放冗餘數據的數組
result_time = [] # 去除冗餘的時間數據
TH=th
print(INDEX)
print(th)
y_data=[]
com_num=0
for h in x:
x_str.append(h)
X=np.array(x_str)
for k in y:
y_data.append(k)
Y=np.array(y_data)
if(TH==0.0):
return len(y),0,len(y)
for a,b in zip(x,y):
if(i==flag):
result_time.append(X[0])
result_data.append(Y[0])
else:
for j in range(flag,i,m):
m = int(round((i-flag) / 2, 1))
if (m == 0):
m = 1
else:
m = int(round((i-flag) / 2, 1))
if(i<total_len and j<total_len):
t1 = x[i]
t2 = x[j]
lag=(t1-t2)/0.5#加入對時間間隔的控制
com_num = com_num + 1
if Y[i] is None or Y[j] is None:
break
else:
b = Y[i] - Y[j] # 加入對數據距離的控制
com_num = com_num + 1
th_Data=abs(b)
if(th_Data<=TH and lag<=T):
temp_data.append(Y[i])
if(th_Data>TH or lag>T):
result_data.append(Y[i])
result_time.append(X[i])
flag=i
break
i=i+1
# print(result_data)
# print(len(result_data))
print(len(result_data),com_num,len(y))
return len(result_data),com_num,len(y)
2、DAWF
def deal_data(INDEX,th):
print(INDEX)
print(th)
x,y=time_change(INDEX)
i=0
no_redundant_flag=0
flag=0
n=0
com_num=0
result_data=[]
temp_data=[]
result_time=[]
if(th==0.0):
return len(y),0,len(y)
for r in zip(y):
if(i+1<len(y)):
if y[i] is None:
break
else:
result=abs(y[i+1]-y[i])/y[i]
com_num=com_num+2
temp_data.append(result)
if(result<=th):
n=n+1
if(n%50==0 and n==50):
means_data=mean(y[flag:flag+n])
com_num=com_num+n
flag=i
result_data.append(means_data)
result_time.append(x[i])
n=0
else:
n=0
if(no_redundant_flag!=i or i==0):
result_data.append(y[i])
result_time.append(x[i])
result_data.append(y[i + 1])
result_time.append(x[i + 1])
no_redundant_flag = i + 1
i=i+1
print(len(result_data),com_num,len(y))
return len(result_data),com_num,len(y)