?? gpkolmogorov.cpp
字號(hào):
// GPKolmogorov.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include "Henon.h"
#include "HyperRossler.h"
#include "Lorenz.h"
#include "GPKolmogorov.h"
#define MAXLEN 10000
#define MLEN 12
#define RLEN 50
int main(int argc, char* argv[])
{
double Seq[MAXLEN]={0};
//int Henon_len=3000;
//int Lorenz_len=3000;
int HyperRossler_len=3000;
//double *Henon_X=new double[Henon_len];
//double *Henon_Y=new double[Henon_len];
//Henon映射初值
//double Henon_x0=1;
//double Henon_y0=0;
//lorenz映射初值
//double Lorenz_init[3] = {15,13,37};
//double *Lorenz_X=new double[Lorenz_len];
//double *Lorenz_Y=new double[Lorenz_len];
//double *Lorenz_Z=new double[Lorenz_len];
//超Rossler映射初值
double HyperRossler_init[4] = {-20,0,0,15};
double *HyperRossler_X=new double[HyperRossler_len];
double *HyperRossler_Y=new double[HyperRossler_len];
double *HyperRossler_Z=new double[HyperRossler_len];
double *HyperRossler_W=new double[HyperRossler_len];
//嵌入維
int m[MLEN];
//延時(shí)
int delay=15;
double r[RLEN];
//關(guān)聯(lián)維輸出矩陣
double ln_C[MLEN][RLEN];
double *lncc[MLEN];
double ln_r[RLEN];
double mean_x[MLEN]={0};
double mean_y[MLEN]={0};
double lxx[MLEN]={0};
double lxy[MLEN]={0};
double sum_lxx=0;
double sum_lxy=0;
double a_D;
double b_D[MLEN];
double Kolmogorov[MLEN-1]; //得到的Kolmogorov矩陣
int i,j;
for (i=0; i<MLEN; i++)
{
lncc[i] = ln_C[i];
}
//定義嵌入維矩陣
for (i=0; i<MLEN; i++)
{
m[i] = 8+2*i;
}
for (i=0; i<RLEN; i++)
{
r[i] = 3+2*i;
}
//Henon2(Henon_X,Henon_Y,Henon_x0,Henon_y0,Henon_len);
//lorenz(Lorenz_X,Lorenz_Y,Lorenz_Z,Lorenz_init,Lorenz_len);
hyperrossler(HyperRossler_X,HyperRossler_Y,
HyperRossler_Z,HyperRossler_W,HyperRossler_init,HyperRossler_len);
/* for (i=0; i<Henon_len; i++)
{
cout<<Henon_X[i]<<" ";
if (i%7==6)
cout<<endl;
}*/
/* for (i=0; i<Lorenz_len; i++)
{
cout<<Lorenz_X[i]<<" ";
if (i%7==6)
cout<<endl;
}*/
for (i=0; i<HyperRossler_len/30; i++)
{
cout<<HyperRossler_X[i]<<" ";
if (i%7==6)
cout<<endl;
}
GP_Kol(HyperRossler_X,r,HyperRossler_len,m,RLEN,MLEN,delay,lncc,ln_r);
for (i=0; i<MLEN; i++)
{
for (j=0; j<RLEN; j++)
cout<<ln_C[i][j]<<" ";
if (j%7==6)
cout<<endl;
}
//計(jì)算x,y的均值
for (i=0; i<MLEN; i++)
{
for (j=0; j<RLEN; j++)
{
mean_y[i] += ln_C[i][j];
mean_x[i] += ln_r[j];
}
mean_y[i] /= RLEN;
mean_x[i] /= RLEN;
}
//計(jì)算lxy,lxx的值及其和.
for (i=0; i<MLEN; i++)
{
for (j=0; j<RLEN; j++)
{
lxy[i] += (ln_C[i][j]-mean_y[i])*(ln_r[j]-mean_x[i]);
lxx[i] += (ln_r[j]-mean_x[i])*(ln_r[j]-mean_x[i]);
}
sum_lxy += lxy[i];
sum_lxx += lxx[i];
}
a_D = sum_lxy/sum_lxx;
cout<<"嵌入維為:"<<a_D<<endl;
for (i=0; i<MLEN; i++)
{
b_D[i] = mean_y[i]-a_D*mean_x[i];
}
//得到Kolmogorov熵
cout<<"Kolmogorov熵為:"<<endl;
for (i=0; i<MLEN-1; i++)
{
Kolmogorov[i] = (b_D[i]-b_D[i+1])/(2*0.1);
cout<<Kolmogorov[i]<<" ";
}
//delete [] Henon_X;
//delete [] Henon_Y;
//delete [] Lorenz_X;
//delete [] Lorenz_Y;
//delete [] Lorenz_Z;
delete [] HyperRossler_X;
delete [] HyperRossler_Y;
delete [] HyperRossler_Z;
delete [] HyperRossler_W;
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -