0
matlab에서 코딩 중이며 matlab이 "for"루프와 잘 작동하지 않기 때문에 가능한 빨리 처리 할 수 있어야합니다. 다음은 "for"를 다루는 코드의 일부입니다.회 돌이를 회피하는 행렬 계산
for i = 1:size(U,1)
for j=1:size(U,2)
v(i,j) = U(mod(i+1-1,size(U,1))+1,j) + U(i,mod(j+1-1,size(U,2))+1) ...
+ U(mod(i-1-1,size(U,1))+1,j) + U(i,mod(j-1-1,size(U,2))+1) - 4*U(i,j);
end
end
내 매트릭스에는주기적인 경계 조건이 있기 때문에 "mod"기능을 사용하고 있습니다. 이 코드는 matlab의 "del2"함수와 실제로 비슷하지만 matlab 버전은주기적인 경계 조건과 함께 작동하지 않습니다. meshgrid
를 사용
"for"루프와 잘 맞지 않는다는 것을 설명해주십시오. –
@BradDay "for"루프를 너무 많이 사용하면 다른 언어로 같은 코드를 작성하면 시뮬레이션 런타임이 늘어날 수 있습니다 C++과 같은 프로그래밍은 더 빠를 것입니다. 어쨌든, "for"와 같은 루프 구조의 대안을 찾고 있는데, 그게 ... – aaa
흠. 라플라시안에 대해 U (i, j)의 이웃을 볼 필요가 있기 때문에 반복 과정없이이 방법을 수행 할 수있는 방법은 없습니다. MATLAB이 코드를 너무 느리게 실행하는 경우 제안 할 수있는 유일한 방법은 [parfor] (https://www.mathworks.com/help/distcomp/parfor.html)와 함께 병렬 for 루프를 사용하는 것입니다. –