makefractalCIJ.m 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. function [CIJ,K] = makefractalCIJ(mx_lvl,E,sz_cl)
  2. %MAKEFRACTALCIJ Synthetic hierarchical modular network
  3. %
  4. % [CIJ,K] = makefractalCIJ(mx_lvl,E,sz_cl);
  5. %
  6. % This function generates a directed network with a hierarchical modular
  7. % organization. All modules are fully connected and connection density
  8. % decays as 1/(E^n), with n = index of hierarchical level.
  9. %
  10. % Inputs: mx_lvl, number of hierarchical levels, N = 2^mx_lvl
  11. % E, connection density fall-off per level
  12. % sz_cl, size of clusters (power of 2)
  13. %
  14. % Outputs: CIJ, connection matrix
  15. % K, number of connections present in the output CIJ
  16. %
  17. %
  18. % Olaf Sporns, Indiana University, 2005/2007
  19. % make a little template
  20. t = ones(2).*2;
  21. % compute N and cluster size
  22. N = 2^mx_lvl;
  23. sz_cl = sz_cl-1;
  24. % n = [0 0 0:mx_lvl-3];
  25. for lvl=1:mx_lvl-1
  26. CIJ = ones(2^(lvl+1),2^(lvl+1));
  27. group1 = 1:size(CIJ,1)/2;
  28. group2 = size(CIJ,1)/2+1:size(CIJ,1);
  29. CIJ(group1,group1) = t;
  30. CIJ(group2,group2) = t;
  31. CIJ = CIJ+ones(size(CIJ,1),size(CIJ,1));
  32. t = CIJ;
  33. end;
  34. s = size(CIJ,1);
  35. CIJ = CIJ-ones(s,s)-mx_lvl.*eye(s);
  36. % assign connection probablities
  37. ee = mx_lvl-CIJ-sz_cl;
  38. ee = (ee>0).*ee;
  39. prob = (1./(E.^ee)).*(ones(s,s)-eye(s));
  40. CIJ = (prob>rand(N));
  41. % count connections
  42. K = sum(sum(CIJ));