此程序是应用mex文件来实现潜入维与关联维的计算。.doc

此程序是应用mex文件来实现潜入维与关联维的计算。.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
此程序是应用mex 文件来实现潜入维和关联维的计算。 #include mex.h #include math.h ************************************************ * data:the time series * r: the r series * N: the length of the time series * delay : the delay of the time series * rlen: the length of r series * ln_C: the correlation dimention series ************************************************** void G_P(double data[], double r[], int N, int m, int rlen, int delay, double ln_C[],double ln_r[]) { double distance; /*定义相空间中任意两点之间的距离*/ double max=0; /*初始化两点间最大距离为0*/ int cr=0; /*Heaviside 函数计数初始化为0*/ int i,j,k,l; double Cr=0; int M=N-(m-1)*delay; /*相空间点的个数*/ for (l=0; lrlen; l++) /*r 系列的依次取值*/ { for (i=0; iM-1; i++) /*任意两点间距离*/ { for (j=i+1; jM; j++) { for (k=0; km; k++) { distance = fabs(data[i+k*delay]-data[j+k*delay]); if (distancemax) max = distance; } if (r[l]=max) cr++; /*Heaviside 函数取值为1*/ max = 0; } } Cr = cr/(M*(M-1));/*关联积分C2(r,m) cr = 0; ln_C[l] = log(Cr); ln_r[l] = log(r[l]); } } void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) /*mex 文件入口函数是mexFunction 函数 { double *data; double *r; int m; int delay; double *ln_C; double *ln_r; int datalen,rlen; /*检查正确的参数数目*/ if (nrhs!=4) mexErrMsgTxt(Four inputs required!); else if (nlhs2) mexErrMsgTxt(Too many output arguments!); datalen = mxGetN(prhs[0]); rlen = mxGetN(prhs[1]); m = mxGetScalar(prhs[2]); delay = mxGetScalar(prhs[3]); /*定义两个输出矩阵,以便返回参数*/ plhs[0] = mxCreateDoubleMatrix(1,rlen,mxREAL); plhs[1] = mxCreateDoubleMatrix(1,rlen,mxREAL); /*分配输入输出参数的指针*/ data = mxGetPr(prhs[0]); r = mxGetPr(prhs[1]); ln_C = mxGetPr(plhs[0]); ln_r = mxGetPr(plhs[1]); /*调用G_P 子函数*/ G_P(data,r,datalen,m,rlen,delay,ln_C,ln_r);} 附录3: 此程序实现了时间延迟参数的确定。 #define N 1000 #define MAX 200 #include stdio.h float ave(float *a,int n) { int i; float ave1; long double sum=0; for (i=0;in;i++) sum+=a[i]; printf(%f\n,sum); ave1=sum/n; return ave1; } float autol(float *y,int t,int n,float ave) { float up=0,dowm=0,s=0,c; int i; for(i=0;in;i++) s=(y[i]-ave)*(y[i]-ave); dowm=s/n; for

文档评论(0)

00625 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档