声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1397|回复: 8

[综合讨论] matlab代码运行的问题

[复制链接]
发表于 2013-10-29 17:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
运行以下求解最大李雅普诺夫指数的程序是,总是提示:   ??? Undefined function or variable 'P'.请问如何解决这个问题。程序代码如下:
  1. function lambda_1=largest_lyapunov_exponent(data,N,m,tau,P)
  2. %the function is used to calcultate largest lyapunov exponent with the
  3. %mended algorithm,which put forward by lv jing hu.
  4. %data:the time series
  5. %N:the length of data
  6. %m:enbedding dimention
  7. %tau:time delay
  8. %P:the mean period of the time series,calculated with FFT
  9. %lambda_1:return the largest lyapunov exponent
  10. %skyhawk
  11. delt_t=1;
  12. Y=reconstitution(data,N,m,tau );%reconstitute state space
  13. M=N-(m-1)*tau;%M is the number of embedded points in m-dimensional space
  14. for j=1:M
  15.     d_max=1e+100;
  16.     for jj=1:M                                              %寻找相空间中每个点的最近距离点,并记下
  17.         d_s=0;                                              %该点下标
  18.         if abs(j-jj)>P                                      %限制短暂分离
  19.             for i=1:m
  20.                 d_s=d_s+(Y(i,j)-Y(i,jj))*(Y(i,j)-Y(i,jj));
  21.                 d_min=d_max;
  22.                 if d_s<d_min
  23.                    d_min=d_s;
  24.                    idx_j=jj;
  25.                end
  26.             end
  27.         end
  28.     end
  29. %     index(j)=idx_j;
  30.     max_i=min((M-j),(M-idx_j));%计算点j的最大演化时间步长i
  31.     for k=1:max_i              %计算点j与其最近邻点在i个离散步后的距离
  32.         d_j_i=0;
  33.         for kk=1:m
  34.             d_j_i=d_j_i+(Y(kk,j+k)-Y(kk,idx_j+k))*(Y(kk,j+k)-Y(kk,idx_j+k));
  35.             d(k,j)=d_j_i;
  36.         end
  37.     end
  38. end

  39. %对每个演化时间步长i,求所有的j的lnd(i,j)平均
  40. [l_i,l_j]=size(d);
  41. for i=1:l_i
  42.     q=0;
  43.     y_s=0;
  44.     for j=1:l_j
  45.         if d(i,j)~=0
  46.             q=q+1;
  47.             y_s=y_s+log(d(i,j));
  48.         end
  49.     end
  50.     y(i)=y_s/(q*delt_t);
  51. end
  52. x=1:length(y);
  53. pp=polyfit(x,y,1);
  54. lambda_1=pp(1);
  55. yp=polyval(pp,x);
  56. plot(x,y,'-o',x,yp,'--')
复制代码
本人的版本为64位win7,matlab7.6.0(R2008a)
回复
分享到:

使用道具 举报

发表于 2013-10-30 14:57 | 显示全部楼层
P 是函数的输入之一,用的时候没有赋值

评分

1

查看全部评分

发表于 2013-11-1 15:07 | 显示全部楼层
木有看出来
发表于 2013-11-2 08:51 | 显示全部楼层
发表于 2013-11-2 09:19 | 显示全部楼层
??? Undefined function or variable 'P'


Ref:
2.常见的程序出错问题整理 http://forum.vibunion.com/thread-46001-1-1.html
From http://home.vibunion.com/blog-63979-18250.html
 楼主| 发表于 2013-11-6 16:43 | 显示全部楼层
321forever 发表于 2013-10-30 14:57
P 是函数的输入之一,用的时候没有赋值

赋值后,还是不行,求指导。
  1. function lambda_1=largest_lyapunov_exponent(data,N,m,tau,P)
  2. %the function is used to calcultate largest lyapunov exponent with the
  3. %mended algorithm,which put forward by lv jing hu.
  4. %data:the time series
  5. %N:the length of data
  6. %m:enbedding dimention
  7. %tau:time delay
  8. %P:the mean period of the time series,calculated with FFT
  9. %lambda_1:return the largest lyapunov exponent
  10. %skyhawk
  11. data=load('b.txt');
  12. N=length(data);
  13. m=2;
  14. tau=6;
  15. p=6;
  16. delt_t=1;
  17. Y=reconstitution(data,N,m,tau );%reconstitute state space
  18. M=N-(m-1)*tau;%M is the number of embedded points in m-dimensional space
  19. for j=1:M
  20.     d_max=1e+100;
  21.     for jj=1:M                                              %寻找相空间中每个点的最近距离点,并记下
  22.         d_s=0;                                              %该点下标
  23.         if abs(j-jj)>P                                      %限制短暂分离
  24.             for i=1:m
  25.                 d_s=d_s+(Y(i,j)-Y(i,jj))*(Y(i,j)-Y(i,jj));
  26.                 d_min=d_max;
  27.                 if d_s<d_min
  28.                    d_min=d_s;
  29.                    idx_j=jj;
  30.                end
  31.             end
  32.         end
  33.     end
  34. %     index(j)=idx_j;
  35.     max_i=min((M-j),(M-idx_j));%计算点j的最大演化时间步长i
  36.     for k=1:max_i              %计算点j与其最近邻点在i个离散步后的距离
  37.         d_j_i=0;
  38.         for kk=1:m
  39.             d_j_i=d_j_i+(Y(kk,j+k)-Y(kk,idx_j+k))*(Y(kk,j+k)-Y(kk,idx_j+k));
  40.             d(k,j)=d_j_i;
  41.         end
  42.     end
  43. end

  44. %对每个演化时间步长i,求所有的j的lnd(i,j)平均
  45. [l_i,l_j]=size(d);
  46. for i=1:l_i
  47.     q=0;
  48.     y_s=0;
  49.     for j=1:l_j
  50.         if d(i,j)~=0
  51.             q=q+1;
  52.             y_s=y_s+log(d(i,j));
  53.         end
  54.     end
  55.     y(i)=y_s/(q*delt_t);
  56. end
  57. x=1:length(y);
  58. pp=polyfit(x,y,1);
  59. lambda_1=pp(1);
  60. yp=polyval(pp,x);
  61. plot(x,y,'-o',x,yp,'--')
复制代码
请帮忙看看,谢谢了。
发表于 2013-11-7 09:35 | 显示全部楼层
1.求助完整格式:出错代码和出错提示
2.直觉楼主不是很清楚m-function与m-script的差异, 建议看下帮助文献
发表于 2013-11-8 14:48 | 显示全部楼层
原来是小飞 发表于 2013-11-6 16:43
赋值后,还是不行,求指导。请帮忙看看,谢谢了。

lz 是怎么调用的程序
发表于 2013-12-8 19:52 | 显示全部楼层
ChaChing 发表于 2013-11-2 09:19
Ref:
2.常见的程序出错问题整理 http://www.chinavib.com/thread-46001-1-1.html
From http://home.chi ...

It is wonderful!!谢谢分享
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-18 07:46 , Processed in 0.063297 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表