经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » MATLAB » 查看文章
MATLAB实例:对称双随机矩阵
来源:cnblogs  作者:凯鲁嘎吉  时间:2019/10/24 9:20:41  对本文有异议

MATLAB实例:对称双随机矩阵

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

双随机矩阵(doubly stochastic matrix):元素属于[0,1],行和为1,且列和为1。

MATLAB程序

  1. function A=doubly_stochastic(n)
  2. %产生 n 阶双随机矩阵 A
  3. A(1,1)=rand;
  4. for i=2:n-1
  5. d=1-sum(A(1,1:i-1));
  6. A(1,i)=d*rand;
  7. end
  8. for i=2:n-1
  9. d=1-sum(A(1:i-1,1));
  10. A(i,1)=d*rand;
  11. end
  12. for i=2:n-1
  13. for j=2:n-1
  14. d1=1-sum(A(i,1:j-1));
  15. d2=1-sum(A(1:i-1,j));
  16. d=min([d1 d2]);
  17. A(i,j)=d*rand;
  18. end
  19. end
  20. for i=1:n-1
  21. A(n,i)=1-sum(A(1:n-1,i));
  22. end
  23. for i=1:n
  24. A(i,n)=1-sum(A(i,1:n-1));
  25. end
  26. if A(n,n)<0
  27. A=1/n*ones(n);
  28. end
  29. %对称化A
  30. A=(A'+A)/2;

:程序最后一行如果去掉,则为双随机矩阵,加上最后一行,保证矩阵为对称阵。

结果

  1. >> A=doubly_stochastic(5)
  2.  
  3. A =
  4.  
  5. 0.3260 0.2105 0.3017 0.1032 0.0585
  6. 0.2105 0.1132 0.4114 0.1341 0.1308
  7. 0.3017 0.4114 0.0023 0.1947 0.0899
  8. 0.1032 0.1341 0.1947 0.3641 0.2039
  9. 0.0585 0.1308 0.0899 0.2039 0.5169
  10.  
  11. >> sum(A, 1)
  12.  
  13. ans =
  14.  
  15. 1 1 1 1 1
  16.  
  17. >> sum(A, 2)
  18.  
  19. ans =
  20.  
  21. 1
  22. 1
  23. 1
  24. 1
  25. 1
  26.  
  27. >> A'==A
  28.  
  29. ans =
  30.  
  31. 5×5 logical 数组
  32.  
  33. 1 1 1 1 1
  34. 1 1 1 1 1
  35. 1 1 1 1 1
  36. 1 1 1 1 1
  37. 1 1 1 1 1

参考

如何用Matlab产生双随机矩阵

原文链接:http://www.cnblogs.com/kailugaji/p/11728631.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号