杭州锐达数字技术有限公司
查看: 2020|回复: 5

[综合讨论] 关于多重分形谱的问题

[复制链接]
发表于 2006-12-19 21:48 | 显示全部楼层 |阅读模式

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

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

x
看了几篇文章,提到针对股票时间序列计算多重分形谱,得出了下图,请问老师们,有这个计算多重分形谱的程序吗?能否告知,谢谢
{99B8B03C-449D-450F-9AA4-FCE0A094B400}.JPG

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2014-3-14 09:40 | 显示全部楼层
同求啊!我看到是另一篇文章中得到故障信号的多重分形谱,请问你有那个程序了吗?有的话分享一下。谢谢啊
发表于 2014-3-14 10:41 | 显示全部楼层
给提一个多重分形谱算法参考小程程序如下:
  1. A=imread('cameraman.tif');
  2. L=length(A);
  3. i=1;
  4. modify=1;
  5. tmin=2;                % 边框间距,“※”
  6. tmax=10;
  7. ttmin=-10;
  8. ttmax=10;               % 自定义 q 的范围
  9. for r=tmin:1:tmax           
  10. c(i,1)=mod(L,r);
  11. i=i+1;
  12. end                  
  13. c';                     % 计算不能被边长r整除的余数
  14. a=L-c';                 % 计算并剔除掉不能被边长r整除的原始数据
  15. n=length(a);            % 求解格网化边长的个数,即为 n
  16. TT=[];
  17. j=1;
  18. r=tmin;                % 自定义项,“※-2”
  19. for i=1:1:n             % 即n=25-10+1,自定义的结果
  20. B=A(1:a(i),1);
  21. U=reshape(B,r,length(B)/r);
  22. T=mean(U);
  23. T=T'.*r^3;            
  24. TT(1: length(T),i)=[T];   
  25. modifying(modify,1)=length(T);
  26. r=r+1;
  27. if r>= tmin+n           % 自定义项,“※-3”
  28. break;             % 边长超过10+n,超过初始限制,则程序自动终止
  29. end
  30. modify=modify+1;
  31. end               
  32. modifying;
  33. TT= nthroot(TT,1);        
  34. % 或者不缩小
  35. % TT;
  36. TT=nonzeros(TT);         
  37. for cugb=1:1:n                 
  38. modifying_modifying(cugb,1)=sum(modifying(1:cugb));     % 有影响的新加卷 % & * % ¥ # @ !) ……
  39. end                                       
  40. modifying_modifying;            
  41. j=1;
  42.                        % q 为任意数,这里取1到n,为n,与 k取值保持一致,q过大,计算机无法
  43.                                   %识别,默认为无穷大,q过小,结果接近0,则意义不明确
  44. for q=ttmin:ttmax           %这里取 q=-10:1:10
  45. for k=1:1:n
  46.     X=TT(1:modifying_modifying(k,1),1).^q;              
  47.     if k>1                 
  48.       X=TT(modifying_modifying(k-1,1)+1:modifying_modifying(k,1),1).^q;  
  49.     end
  50. t=sum(X);
  51. XX(k,j)=[t];             % 这里用到两个循环,即考虑到了幂函数,又需考虑求和
  52. end
  53. j=j+1;
  54. end
  55. XX;                     % 得到质量分配函数,Xq(ξ),               
  56. X=log(tmin:1:tmax);
  57. % X=log(tmax:-1:tmin);          % 此系以前的自定义输入结果,“※—4”
  58. Y=log(XX);
  59. % figure(1)
  60. % plot(X',Y,'o-k')        % 至此,计算多重分形谱的第一步,分配函数构建完毕
  61. side_length= tmin:1:tmax;         % 自定义网格边长,“※—5”
  62. side_length=side_length';
  63. q=ttmin:ttmax;                    % q=-5:1:n-10,q=-10:1:10
  64. m=1;
  65. [ha,hb]=size(XX);
  66. for i=1:1:hb
  67. % XX=XX’;                         % or not
  68. s=XX(:,i);                        % XX
  69. b=polyfit(log(side_length),log(s),1);  % 在对数尺度下计算斜率
  70. slope(m,1)=b(1,1);                       
  71. m=m+1;
  72. end
  73. slope;                                 %  这里的Slope即为质量指数,τ(q)
  74. N=polyfit(q', slope,1);
  75. plot(q', slope)    %  此步是考察τ(q)-q 之间的关系,
  76. a=diff(slope)./diff(q');   % 第三步计算,diff函数求偏导确实少一列
  77. q=q';
  78. f_a=a.*q(1:end-1)-slope(1:end-1);
  79. % figure(2)
  80. % a=sort(a,'ascend');
  81. plot(a,f_a,'o-k')
  82. xlabel('α','FontSize',12);
  83. ylabel('f(α)','FontSize',12);
  84. % polyfit(a,f_a,3)
  85. a=sort(a,'ascend');
  86. % a+1
  87. % f_a+1
  88. a    % 奇异性指数
复制代码
另外还有一个是盒子维数的计算的程序
(备注:运行的时候,把文件名改一下,不要出现中文)以及多重分形谱及其计算的小论文(见附件)。


盒子分形维数.rar

852 Bytes, 下载次数: 8

多重分形谱及其计算.pdf

135.73 KB, 下载次数: 11

发表于 2015-5-15 19:45 | 显示全部楼层
我也想下载多重分形的程序,但积分不够
发表于 2015-12-18 21:16 | 显示全部楼层
我也想下载
发表于 2018-4-20 20:24 | 显示全部楼层
感谢分享
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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