完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
循环! 循环!
基本上matlab是不推荐大家使用大量循环的,但是如果万一真的遇到一些大规模的循环,代码的写法会有什么要求吗? 猜猜看,快的循环是慢的循环的几倍呢? a) 10倍 b) 5倍 c) 2.5倍 d) 1.5倍 %%2重循环的效率 t1 = 0; t2 = 0; p = magic(1000); v = zeros(1000); for num = 1 : 100 tic; for n = 1 : size(p,1) %低效率的循环 for m = 1 : size(p,2) v(n,m) = p(n,m); end end t1 = toc + t1; tic; for m = 1 : size(p,2) %高效率的循环 for n = 1 : size(p,1) v(n,m) = p(n,m); end end t2 = toc + t2; end ratio = t1/t2; msg = sprintf('Loop 2 is %2.1fx faster than loop 1',ratio); disp(msg); %%3重循环的效率 t1 = 0; t2 = 0; p = randi(1000,[100,100,100]); v = zeros(100,100,100); for num = 1 : 100 tic; for n = 1 : size(p,1) %低效率的循环 for m = 1 : size(p,2) for l = 1 : size(p,3) v(n,m,l) = p(n,m,l); end end end t1 = toc + t1; tic; for m = 1 : size(p,3) %高效率的循环 for n = 1 : size(p,2) for l = 1 : size(p,1) v(n,m) = p(n,m); end end end t2 = toc + t2; end ratio = t1/t2; msg = sprintf('3DLoop 2 is %2.1fx faster than 3Dloop 1',ratio); disp(msg); 答案:二重循环loop2 大约是loop1的2.5倍, 三重循环loop2大约是loop1的5倍。
|
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
749 浏览 0 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1462 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2264 浏览 0 评论
2613 浏览 0 评论
4074 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 05:33 , Processed in 0.576799 second(s), Total 46, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号