资源简介
本人测试,Cao法求嵌入维数,绝对有效,下载下来试试,Matlab实现
代码片段和文件信息
#include
#include “mex.h“
#include “stdio.h“
#include “stdlib.h“
#include “matrix.h“
//---------------------------------------------------------------------------
// 计算绝对值
double ABS(double x)
{
double y;
if (x>=0)
y = x;
else
y = -x;
return y;
}
//---------------------------------------------------------------------------
// 计算数组最大值
double MAX_VECTOR(double *p_vector
int len_vector)
{
int i;
double max_value = *p_vector;
for (i=0; i { if (*(p_vector+i)>max_value)
{
max_value = *(p_vector+i);
}
}
return max_value;
}
//求最短距离及向量
void min_dist(double *pdistint nint *placedouble *pmindistint i)
{ int kj;
double min_value ;
for (k=0;k {
if (*(pdist+k)!=0)
{min_value=*(pdist+k);j=k+1;
break;}
}
for (k=0; k {
if ((*(pdist+k)!=0)&&(*(pdist+k) { min_value = *(pdist+k); j=k+1; }
}
*(place+i)=j;
*(pmindist+i)=min_value;
}
//-----------------------------------------------------------------------------
// 计算向量间的距离(最大范数)
double distance(double *Y1double *Y2int m1int tau)
{ int i;
double d*pdd_ij;
pd = (double*)malloc(m1*sizeof(double)); // 声明一个长度为 m 的 double 型数组
for (i=1;i<=m1;i++)
{
d=*(Y1+(i-1)*tau)-*(Y2+(i-1)*tau);
*(pd+i-1)=ABS(d);
}
d_ij=MAX_VECTOR(pdm1);
free(pd);
return d_ij;
}
//---------------------------------------------------------------------------
// 定义 C 运算函数
void Cao_FUNCTION( double *pdata // 时间序列(列向量)
int m_min // 最小嵌入维数
int m_max // 最大嵌入维数
int tau // 时间延迟
int N // 序列长度
double *pE1 //用于存放E1
double *pE2) //用于存放E2
{ int *placeijm;
double *pdist*pmindist*pE*pEn;
pE = (double*)malloc((m_max-m_min+1)*sizeof(double));
pEn = (double*)malloc((m_max-m_min+1)*sizeof(double));
for (m=m_min;m<=m_max;m++)
{
double ad=0neard dd=0;
int n=N-m*taud;
place = (int*) malloc(n*sizeof(int)); //用于存放重构后向量的标号
pmindist = (double*)malloc(n*sizeof(double));
// printf(“共有 %d 步正在计算第 %d 步!\n“m_maxm);
for (i=0;i {
pdist = (double*)malloc(n*sizeof(double)); //存放第i个与每个向量的距离
for (j=0;j { *(pdist+j)=distance(pdata+ipdata+jmtau); }
min_dist(pdistnplacepmindisti); //求第i个向量的最近距离及对应向量标号
//--------------计算a(im)-------------------
d=*(place+i);
neard=*(pmindist+i);
ad=ad+distance(pdata+ipdata+d-1m+1tau)/neard;
dd=dd+ABS(*(pdata+i+m*tau)-*(pdata+d-1+m*tau));//求E*(d)
free(pdist);
}
*(pE+m-m_min)=ad/n; //求E(d)
*(pEn+m-m_min)=dd/n; //求E*(d)
free(place);free(pmindist);
}
//----------求E1(d)&E2(d)-----------
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4401 2006-03-01 21:58 Cao\cao1.c
文件 20480 2006-03-01 20:41 Cao\cao1.dll
文件 3387 2006-02-28 21:41 Cao\cao_m.dsp
文件 535 2006-02-28 21:59 Cao\cao_m.dsw
文件 970 2009-09-14 20:37 Cao\cao_m.m
文件 50176 2006-03-01 22:13 Cao\cao_m.ncb
文件 48640 2006-03-01 22:13 Cao\cao_m.opt
文件 1277 2006-03-01 22:01 Cao\cao_m.plg
文件 328731 2014-10-31 21:06 Cao\cao_m1.m
文件 3062 2006-03-01 13:47 Cao\cao_old.m
文件 20480 2007-04-08 20:14 Cao\ccFunction.dll
文件 4390 2006-01-04 16:14 Cao\ccFunction0.c
文件 20480 2007-04-08 20:15 Cao\ccFunction0.dll
文件 18000 2006-01-15 21:39 Cao\data.dat
文件 4560 2014-10-30 15:31 Cao\data.txt
文件 14718 2004-08-16 03:25 Cao\mex.h
文件 84 2006-02-20 13:47 Cao\readme.txt
文件 296 2003-11-30 18:51 Cao\reconstitution.m
文件 236278 2014-10-31 21:08 Cao\图形\E1.bmp
文件 236278 2014-10-30 16:10 Cao\图形\tau3.bmp
文件 236278 2014-10-30 16:09 Cao\图形\tau4.bmp
文件 236278 2014-10-30 16:09 Cao\图形\tau5.bmp
文件 236278 2014-10-30 16:08 Cao\图形\tau6.bmp
文件 236278 2014-10-30 16:08 Cao\图形\tau7.bmp
文件 236278 2014-10-30 16:07 Cao\图形\tau8.bmp
文件 236278 2014-10-30 16:11 Cao\图形\tau9.bmp
目录 0 2014-10-31 21:08 Cao\图形
目录 0 2014-10-30 09:41 Cao
----------- --------- ---------- ----- ----
2434891 28
............此处省略1个文件信息
- 上一篇:马赛克matlab
- 下一篇:matlab调用ansys运算源码与文档
评论
共有 条评论