在parfor

时间:2018-04-22 15:10:43

标签: matlab parallel-processing

请考虑以下代码。

Wx = zeros(N, N); 
for ii = 1 : 1 : N
        x_ref = X(ii); y_ref = Y(ii);
        nghlst_Local = nghlst(ii, find(nghlst(ii, :))); Nl = length(nghlst_Local);
        x_Local = X(nghlst_Local, 1); y_Local = Y(nghlst_Local, 1);
        PhiU = ones(Nl+1, Nl+1); PhiU(end, end) = 0;
        Phi = ones(Nl+1, Nl+1); Phi(end, end) = 0;
        Bx = zeros(Nl+1,1);
        for jj = 1 : 1 : Nl
            for kk = 1 : 1 : Nl
                rx = x_Local(jj,1) - x_Local(kk,1);
                ry = y_Local(jj,1) - y_Local(kk,1);
                PhiU(jj, kk) = (1 - U(1,1))) / sqrt(rx^2 + ry^2 + c^2);
            end           
            rx = x_ref - x_Local(jj);
            ry = y_ref - y_Local(jj);
            Bx(jj, 1)  = ( (Beta * pi * U(1,1)/(2*r_0*norm(U))) * cos( (pi/2) * (-rx * U(1,1) - ry * U(2,1)) / (r_0 * norm(U)) ) ) / sqrt(rx^2 + ry^2 + c^2) - rx * (1 - Beta * sin( (pi/2) * (-rx * U(1,1) - ry * U(2,1)) / (r_0 * norm(U)) ))/ (rx^2 + ry^2 + c^2)^(3/2);
        end
        invPhiU = inv(PhiU);
        CX  = Bx'  * invPhiU;  CX  = CX (1, 1:end-1); Wx (ii, nghlst_Local) = CX;
end

我想将第一个for循环转换为parfor循环。其余代码工作正常,但是当我更改为parfor时,以下赋值语句不起作用。

Wx (ii, nghlst_Local) = CX;

我想知道这是什么问题以及如何删除此类错误。谢谢。

0 个答案:

没有答案