资源简介

基于Python自相关法时间序列的时间延迟计算,用matlab程序翻译成python并修改调试成功,很辛苦的额。 用于混沌系统、故障诊断等的相空间重构中的时间延迟计算。

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import random
import matplotlib as mpl
import warnings

#混沌时间序列分析源程序

#时间序列的时间延迟计算
def autocorrelation(datatau_max):
    “““#data:输入的时间序列
    #tau_max:最大时间延迟
    #Tau:返回所求时间序列的时间延迟“““
    N=len(data)
    #时间序列长度
    x_mean=np.mean(data)
    #时间序列的平均值
    data=data-x_mean
    SSd=np.dot(datadata)
    R_xx=np.zeros((1tau_max))[0]#=zeros(1tau_max)
    
    #自相关函数初始化
    for tau in range(0tau_max):#1:tau_max
    #计算自相关函数
            for ii in range(0N-tau):#1:N-tau
                #print(tauiiii+tauN)
                R_xx[tau] = R_xx[tau]+data[ii]*data[ii+tau]#
            R_xx[tau]=R_xx[tau]/SSd
    ##end
    #print(len(R_xx))
    print(R_xx)
    #print(np.arange(1tau_max+1))
    plt.plot(np.arange(1tau_max+1)R_xx) #plot(1:tau_maxR_xx);
    #plt.show()##hold on
    #作自相关函数图
    plt.plot([1tau_max][00])#line([1tau_max][00])
    plt.title(‘自相关法求时间延迟‘)
    plt.ylabel(‘自相关函数‘)
    plt.xlabel(‘时间延迟‘) ;plt.show()#
    Tau=0
    #求时间序列的时间延迟
    R_tau = list(map(lambda x:x>=0R_xx))
    #print(R_tau)
    jj = 0;R_jj =R_tau[0] 
    while jj < tau_max:
        jj = jj+1
        if R_jj!=R_tau[jj]:
            break
    tau = jj
    #print(‘tau jj:‘tau)
    if abs(R_xx[jj-1])>abs(R_xx[jj]):
        Tau=Tau+1
        #print(‘tau ok:‘tau) 
    ‘‘‘jj = 0
    while jj < tau_max:#for jj in range(1tau_max):#2:tau_max        
        jj = jj+1#print(jj)
        Tau=jj;print(Tau)
        print(R_xx[jj-1]R_xx[jj]R_xx[jj-1]*R_xx[jj])
        if R_xx[jj-1]*R_xx[jj]<=0:
            print(jj)
            if abs(R_xx[jj-1])>abs(R_xx[jj]):
                pass#Tau=jj;print(‘tau1:‘tau) #break
            else:
                Tau=Tau-1#Tau=jj-1;print(‘tau2:‘tau)#break
            print(‘tau:‘tau);break‘‘‘
    #end
    #end
    #end
    print(‘tau:‘tau)
    return tau
#生成随机数字序列用于测试
def gen_series(n):
    result = []
    for i in range(n):
        t = random.randint(099)#random.uniform(1 10)#random.random()#random.randint(050)#uniform(1 3)
        #随机浮点数random.random() #random.uniform(1 10)
        #随机字符:random.choice(‘abcdefg&##^*f‘)#多个字符中选取特定数量的字符:random.sample(‘abcdefghij‘3)
        #随机整数:random.randint(099)#随机选取0到100间的偶数:random.randrange(0 101 2)
        result.append(t)
    print(result)
    return result
if __name__ == “__main__“:
#解决中文的问题 
    mpl.use(‘TkAgg‘)
    mpl.rcParams[‘font.sans-serif‘] = [‘SimHei‘]   
    mpl.rcParams[‘font.family‘]=‘sans-serif‘  
    #解决负号‘-‘显示为方块的问题  
    mpl.rcParams[‘axes.unicode_minus‘] = False
    
    x = gen_series(100)
    print(‘autocorrelation:‘)
    print(autocorrelation(x20))

    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件   10044356  2008-04-14 20:00  simhei.ttf

     文件       3116  2018-02-11 18:06  autocorrelation.py

----------- ---------  ---------- -----  ----

             10047472                    2


评论

共有 条评论