完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这个技能是比较常用和有效,一方面能提高效率,另一方面能够让代码更漂亮一些。:)
一般来说在matlab中,for很多情况下可以被meshgrid或者ndgrid代替,效率会提高很多。 %% meshgird 代替 for 提高效率 %目标将每个a与每个b相加 a = 1:20; b = 6 : 10; t1 = 0; t2 = 0; p1 = zeros(length(b),length(a)); [A B] = meshgrid(a,b); for num = 1 :10000 tic; for n = 1 : length(a) for m = 1 : length(b) p1((n-1)*length(b) + m) = a(n) + b(m); end end t1= toc + t1; tic; p2 = A + B; t2=toc + t2; end ratio = t1/t2; if (nnz(p1-p2) == 0) disp('p1 equals p2'); end msg = sprintf('Loop 2 is %2.1fx faster than loop 1',ratio); disp(msg); %% ndgrid 代替 n 重 for %目标将 a,b,c 循环相加 a = 1:20; b = 6 : 10; c = 1:10; t1 = 0; t2 = 0; p1 = zeros(length(a),length(b),length(c)); [A B C] = ndgrid(a,b,c); for num = 1 :1000 tic; count = 0; for n = 1 : length(c) for m = 1 : length(b) for l = 1 : length(a) p1(l,m,n) = a(l) + b(m) + c(n); end end end t1= toc + t1; tic; p2 = A + B + C; t2=toc + t2; end ratio = t1/t2; if (nnz(p1-p2) == 0) disp('p1 equals p2'); end msg = sprintf('Loop 2 is %2.1fx faster than loop 1',ratio); disp(msg);
|
|
|
|
1592 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1875 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2696 浏览 0 评论
3033 浏览 0 评论
4095 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 12:26 , Processed in 0.507707 second(s), Total 68, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号