全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
11381 11
2013-03-30
悬赏 10 个论坛币 已解决
小弟程序中使用了一段多重for循环,运行10小时进度才不到三分之一…
网上都说应该尽量向量化,但水平实在有限,不知该如何优化,恳请不吝赐教!论坛币不多,聊表心意!
该段程序如下:

h=waitbar(0,' ');                 
f_bar_star=zeros(2210,200);
sigma=zeros(2210,200);
bty=zeros(3533,200);
for n=1:200                        
    for k=1:2210
        f=zeros(1,3533);
        for i=2:3533
            bty(i,n)=(btp(i+150,n)-btp(i+149,n))/btp(i+149,n);
            S(k,i,n)=single(btsignal(k,i,n));                                       
                                               %btsignal是个三维数组,之前为了能存储,就设为int8格式,这里转回single以便计算自然对数
            f(k,i,n)=log(1+bty(i,n)*S(k,i-1,n))-log(1+bty(i,n)*S0);
            sigma(k,n)=sigma(k,n)+f(k,i,n);
        end
        clear f;                                                 %只能每次小循环都预设和清除一次f,直接预设三维数组就会报out of memory
        f_bar_star(k,n)=1/3533*sigma(k,n);
    end
    waitbar(n/200);
end

最佳答案

sddyl 查看完整内容

不知道你的btp是个变量还是个方程。 如果是个变量,最里面那个循环的第一步可以写成 (btp[k:end,n]-btp[k-1:end-1,N])./btp[k-1:end-1,N] 如果是个方程(否则好像size不对吧...),well,那就没招了。如果你是多核的,用 parfor吧,能把运算时间缩到大约1/#worker
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-3-30 22:15:42
不知道你的btp是个变量还是个方程。

如果是个变量,最里面那个循环的第一步可以写成
(btp[k:end,n]-btp[k-1:end-1,N])./btp[k-1:end-1,N]

如果是个方程(否则好像size不对吧...),well,那就没招了。如果你是多核的,用 parfor吧,能把运算时间缩到大约1/#worker
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-3-31 23:24:10
三层嵌套肯定慢了。200*2210*3532次循环。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-4-1 11:05:48
12核24线程
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-4-1 20:46:27
sddyl 发表于 2013-4-1 04:58
不知道你的btp是个变量还是个方程。

如果是个变量,最里面那个循环的第一步可以写成
sddyl兄:
btp是一个变量,二维数组哈。
(btp[k:end,n]-btp[k-1:end-1,N])./btp[k-1:end-1,N]  →→→→为啥是用方括号呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-4-6 11:22:45
Davidcharge 发表于 2013-4-1 20:46
sddyl兄:
btp是一个变量,二维数组哈。
(btp[k:end,n]-btp[k-1:end-1,N])./btp[k-1:end-1,N]  →→→→ ...
python写串了...应该是括弧 : )
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群