📄 cc.cpp
字号:
// CC.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "CC.h"
#include "ReadFromMat.h"
const double deta_lorenz=12.7277;
const double deta_hyperhenon = 1.002;
const double deta_hyperrossler = 19.4922;
int main(int argc, char* argv[])
{
double ccSeq[length]={0};
engine *ep;
mxArray *px=NULL;
mxArray *py=NULL;
mxArray *pz=NULL;
int i;
if (!(ep=engOpen(NULL)))
{
cout<<"Can't start MATLAB engine"<<endl;
}
px=mxCreateDoubleMatrix(1,201,mxREAL);
py=mxCreateDoubleMatrix(1,201,mxREAL);
pz=mxCreateDoubleMatrix(1,201,mxREAL);
readlorenz("c:\\lorenz.mat",ccSeq);
//ReadMatFrHenon("C:\\HyperHenonX.mat",ccSeq);
//检测数据是否读出
/* for (i=0; i<length; i++)
{
cout<<ccSeq[i]<<" ";
if (i%7==6)
cout<<endl;
}*/
double r[4];
double Sm1[4][201]={0}; //m,r,t数组
double Sm2[4][201]={0};
double Sm3[4][201]={0};
double Sm4[4][201]={0};
double dS[4][201];
double mean_S[201]={0}; //均值
double mean_dS[201]={0}; //最大最小差值的均值
double *ps1[4];
double *ps2[4];
double *ps3[4];
double *ps4[4];
double Scor[201];
int m;
int t;
for (i=0; i<4; i++)
{
ps1[i]=Sm1[i];
ps2[i]=Sm2[i];
ps3[i]=Sm3[i];
ps4[i]=Sm4[i];
}
//求得四个不同的半径值
for (i=0; i<4; i++)
{
//r[i] = deta_hyperhenon*(i+1)/2;
r[i] = deta_lorenz*(i+1)/2;
}
//m=2,3,4,5时S(m,r,t)的值
for (t=1; t<=200; t++)
{
for (i=0; i<4; i++)
{
Sm1[i][t] = CC(ccSeq,2,r[i],t);
Sm2[i][t] = CC(ccSeq,3,r[i],t);
Sm3[i][t] = CC(ccSeq,4,r[i],t);
Sm4[i][t] = CC(ccSeq,5,r[i],t);
//cout<<Sm1[i][t]<<" ";
}
}
//计算出S[t]的均值
for (t=1; t<=200; t++)
{
for (i=0; i<4; i++)
//i=0;
{
mean_S[t] += Sm1[i][t]+Sm2[i][t]+Sm3[i][t]+Sm4[i][t];
}
mean_S[t] /= 16;
//cout<<mean_S[t]<<" ";
}
MaxMin(ps1,dS[0]);
MaxMin(ps2,dS[1]);
MaxMin(ps3,dS[2]);
MaxMin(ps4,dS[3]);
//求得deta(S)的均值
for (t=1; t<=200; t++)
{
for (m=2; m<=5; m++)
{
mean_dS[t] += dS[m-2][t];
}
mean_dS[t] /= 4;
//cout<<mean_dS[t]<<" ";
}
//为了作图方便,给数组初始元素赋值
mean_S[0] = mean_S[1];
mean_dS[0] = mean_dS[1];
for (t=0; t<=200; t++)
{
Scor[t] = mean_S[t]+mean_dS[t];
cout<<"No"<<t<<"is:"<<Scor[t]<<" ";
if (t%4==3)
cout<<endl;
}
//作图
memcpy((double *)mxGetPr(px), (double *)mean_S, sizeof(mean_S));
memcpy((double *)mxGetPr(py), (double *)mean_dS, sizeof(mean_dS));
memcpy((double *)mxGetPr(pz), (double *)Scor, sizeof(Scor));
engPutVariable(ep,"X",px);
engPutVariable(ep,"Y",py);
engPutVariable(ep,"Z",pz);
engEvalString(ep,"plot(X)");
engEvalString(ep,"hold on");
engEvalString(ep,"plot(Y)");
//engEvalString(ep,"hold on");
//engEvalString(ep,"plot(Z)");
mxDestroyArray(px);
mxDestroyArray(py);
mxDestroyArray(pz);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -