24小时热门版块排行榜    

查看: 1410  |  回复: 5

hjnwsuaf

金虫 (著名写手)

[求助] 如何提高多层循环速度?见程序已有1人参与

程序如图片显示内容。
当参数lp较小时,运算可以可以进行,当很大超过500后,就会导致死机。
如何解决这个问题,提高运算速度呢?

具体程序如下:
clc
clear all
lp=50;
a=-lp:1:lp;
xh=length(a);
tic
for i=1:1:xh
    for j=1:1:xh
        for k=1:1:xh
            rt(i,j,k)=a(i)^3+a(j)^3+a(k)^3;
        end
    end
end
toc

如何提高多层循环速度?见程序
1.jpg
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duzhaolong

金虫 (小有名气)

123万物

用矩阵乘法看看,或者换用优化过的算法,3层for循环,数据量大的时候确有点慢

发自小木虫Android客户端
努力感悟,但有所得足矣
2楼2015-12-10 09:26:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
3楼2015-12-10 09:33:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxws.2008

木虫 (正式写手)

matlab循环慢,用C语言或fortran

发自小木虫Android客户端
4楼2015-12-10 09:46:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wxws.2008

木虫 (正式写手)

变成3个一维数组,然后合并,根本不用循环

发自小木虫Android客户端
5楼2015-12-10 09:52:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mygt_hit

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
hjnwsuaf: 金币+20, ★★★很有帮助 2015-12-10 17:14:02
把三次方运算提到外面,并用矩阵操作试试。我的电脑慢,卡住了。
clc
clear all
lp=50;
a=-lp:1:lp;
a = a.^3;
a = transpose(a);
xh=length(a);
tic
A = repmat(a,[1,xh,xh]);
B = permute(A,[2,1,3]);
C = permute(A,[3,2,1]);
R = A + B + C;
toc
知其然,知其所以然。
6楼2015-12-10 13:39:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hjnwsuaf 的主题更新
信息提示
请填处理意见