首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在for循环中进行了一些迭代之后,Matlab的运行速度非常慢(几乎停滞)。

在for循环中进行了一些迭代之后,Matlab的运行速度非常慢(几乎停滞)。
EN

Stack Overflow用户
提问于 2017-01-18 14:56:00
回答 1查看 52关注 0票数 1

在我的程序中,我有一个for循环,它必须运行5823x8153次。在i= 3944和j= 8153之前,for循环运行得非常快。然而,在这一点之后,for循环运行得非常慢,几乎在这一点上停滞不前。我尝试了一些加速方法,如预分配和在for循环之前计算一些变量,但它不起作用。有问题的for循环如下所示。你能帮我解决这个问题吗?顺便说一句,它适用于小部分(1000x1000或3000x3000)的相同数据,我使用64 it的工作站运行此程序。我期待着您的回音

代码语言:javascript
复制
ro1 = (180*3600)/pi;
ro = ro1^2;  
sigma_h = horizontal_prec_secs;
sigma_v = vertical_prec_secs;
error_ellip_dim = nan(5823,8153,3);
for i = 1:5823
    for j = 1:8153
        sigma_r = range_precision(i,j);
        h = horizontal_angle(i,j);
        v = vertical_angle(i,j);
        r = range(i,j)*1000;
        if (isnan(h))||(isnan(sigma_r))
           error_ellip_dim(i,j,:) = NaN;
        else
            EXX(1,1) = sigma_r^2*COSDH(i,j)^2*COSDV(i,j)^2 + (r^2*sigma_h^2*COSDV(i,j)^2*SINDH(i,j)^2)/ro + (r^2*sigma_v^2*COSDH(i,j)^2*SINDV(i,j)^2)/ro;
            EXX(1,2) = sigma_r^2*COSDH(i,j)*COSDV(i,j)^2*SINDH(i,j) - (r^2*sigma_h^2*COSDH(i,j)*COSDV(i,j)^2*SINDH(i,j))/ro + (r^2*sigma_v^2*COSDH(i,j)*SINDH(i,j)*SINDV(i,j)^2)/ro;
            EXX(1,3) = COSDH(i,j)*COSDV(i,j)*SINDV(i,j)*sigma_r^2 - (r^2*sigma_v^2*COSDH(i,j)*COSDV(i,j)*SINDV(i,j))/ro;
            EXX(2,1) = EXX(1,2); 
            EXX(2,2) = sigma_r^2*COSDV(i,j)^2*SINDH(i,j)^2 + (r^2*sigma_h^2*COSDH(i,j)^2*COSDV(i,j)^2)/ro + (r^2*sigma_v^2*SINDH(i,j)^2*SINDV(i,j)^2)/ro;
            EXX(2,3) = COSDV(i,j)*SINDH(i,j)*SINDV(i,j)*sigma_r^2 - (r^2*sigma_v^2*COSDV(i,j)*SINDH(i,j)*SINDV(i,j))/ro;
            EXX(3,1) = EXX(1,3);
            EXX(3,2) = EXX(2,3);
            EXX(3,3) = sigma_r^2*SINDV(i,j)^2 + (r^2*sigma_v^2*COSDV(i,j)^2)/ro;
            [eig_vec_mat,eig_val_mat] = eig(EXX);
            ellip_params = sqrt(diag(eig_val_mat));
            error_ellip_dim(i,j,:) = ellip_params';            
        end
    end
    i
    j
end
EN

回答 1

Stack Overflow用户

发布于 2017-01-24 15:39:02

非常感谢你的帮助。我发现了问题所在。在它卡住的地方,MAtlab试图计算负数的平方根,并得到复数。它为这项工作付出了巨大的努力。我通过一个简单的编码避免了这些数字,它运行得相当快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41713131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档