马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 牛小贱 于 2014-3-7 20:36 编辑
RT,我最近做时间序列的分析,在网上找的陆振波博士的计算时间序列关联维数和熵的程序,对时间序列进行HHT滤波处理之后,导入陆博士的程序,有些得到的是nan和0.00000,这些说明什么情况呢?有人做过吗?求教我一下
下面的是主程序:
- clc
- clear all
- close all
- x=importdata('D:\Documents\Desktop\新的要求\10-30%-5.mat'); % 时间序列(列向量)
- x=x';
- %----------------------------------- ---------------------------------------
- % G-P算法计算关联维
- k=length(x);
- rr = 0.5;
- Log2R = -6:rr:0; % log2(r)
- R = 2.^(Log2R);
- fs =100; % 信号采样频率
- t = 10; % 时延
- dd = 4; % 嵌入维间隔
- D = 4:dd:72; % 嵌入维
- p = 50; % 限制短暂分离,大于序列平均周期(不考虑该因素时 p = 1)
- tic
- Log2Cr = log2(CorrelationIntegral(x,t,D,R,p)); % 输出每一行对应一个嵌入维
- toc
- %--------------------------------------------------------------------------
- % 结果作图
- figure
- plot(Log2R,Log2Cr','k.-'); axis tight; hold on; grid on;
- xlabel('log2(r)');
- ylabel('log2(C(r))');
- title(['signal, length = ',num2str(k)]);
- %--------------------------------------------------------------------------
- % 最小二乘拟合
- Linear = [6:10]; % 线性似合区域
- [a,B] = LM2(Log2R,Log2Cr,Linear); % 最小二乘求斜率和截距
- disp(sprintf('Correlation Dimension = %.4f',a));
- for i = 1:length(D)
- Y = polyval([a,B(i)],Log2R(Linear),1);
- plot(Log2R(Linear),Y,'r');
- end
- hold off;
- %--------------------------------------------------------------------------
- % 求梯度
- Slope = diff(Log2Cr,1,2)/rr; % 求梯度
- xSlope = Log2R(1:end-1); % 梯度所对应的log2(r)
- figure;
- plot(xSlope,Slope','k.-'); axis tight; grid on;
- xlabel('log2(r)');
- ylabel('Slope');
- title(['signal, length = ',num2str(k)]);
- %--------------------------------------------------------------------------
- % 差分求K熵
- KE = -diff(B)/(dd*t)*fs*log(2); % 用采样频率 fs 和公式 log(x) = log2(x)*log(2) 将单位转化成 nats/s
- D_KE = D(1:end-1); % K熵所对应的嵌入维
- figure;
- plot(D_KE,KE,'k.-'); grid on; hold on;
- xlabel('m');
- ylabel('Kolmogorov Entropy (nats/s)');
- title(['signal, length = ',num2str(k)]);
- %--------------------------------------------------------------------------
- % 输出显示
- disp(sprintf('Kolmogorov Entropy = %.4f',min(KE)));
复制代码 处理一组数据后得到的图形如下:
|