完善资料让更多小伙伴认识你,还能领取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);
|
|
|
|
|
我用matlab的coder 封装了一个c语言的dll, 但是在用labview调用时,会出现识别不到库的问题,有大神遇到过吗
2673 浏览 0 评论
5246 浏览 0 评论
在matlab中如何计算含有第一类修正的贝塞尔函数的积分算不出的问题?
9043 浏览 0 评论
怎么利用matlab得到95%,80%和70%的置信区间,并生成不同区间下的功率误差贝塔分布?
10485 浏览 0 评论
请问simulink的s-function模块如何添加多输入输出接口
14660 浏览 2 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 12:41 , Processed in 0.626861 second(s), Total 38, Slave 29 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖