- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)