저는 C 및 MATLAB 사용자입니다. 파이썬 (1 주일 전)을 배우기 시작했을 때 나는 MATLAB의 잠재력, 특히 배열 연산을 사용하지 않는다는 것을 알았습니다.Python 및 Matlab에서 루프를 단순화하는 방법
이alpha = [1e-4,1e-3,1e-4,1e-1,1e-2,1e-3,1e-6,1e-3];
zeta = alpha/(dz*dz)
nz = 101
l=[0.3,0.1,0.2,0.1,0.1,0.1,0.2];
wz = cumsum(l*(nz-1));
nl = lenght(l);
이 가능 단순화되어 다음 : 나는 이전 팁에서
C.
프로그래밍을 배운 아마 때문에, 내가 예를 들어,cumsum
및 기타 효율적인 배열 작업을 사용하는 것을 배웠다, 종종 루프에 사용 Python (Numpy) 또는 MATLAB 코드?
A = zeros(nz,nz);
i=1;
for j = 2:wz(i)-1
A(j,j-1) = zeta(1,1);
A(j,j) = -2*zeta(1,1);
A(j,j+1) = zeta(1,1); % layer 1 nodes
end
%cicle to n-layers
for i=2:nl
for j=wz(i-1):wz(i-1)
A(j,j-1) = zeta(1,i-1);
A(j,j) = -zeta(1,i-1)-zeta(1,i);
A(j,j+1) = zeta(1,i);
end
for j=wz(i-1)+1:wz(i)
A(j,j-1) = zeta(1,i);
A(j,j) = -2*zeta(1,i);
A(j,j+1) = zeta(1,i);
end
end
end
또는 두 개의 코드가 수행뿐만 아니라 우리에게 일반 코드를 제공하도록되어 무엇을 ...이 코드는 1D 식 히트에 속하는 – Hans
@Hans 솔버가 다중 레이어에 적용됩니다. 알파는 레이어 당 확산 계수가있는 배열이고, l은 레이어 당 높이가있는 배열이고, wz는 점의 누적 합계 (이산 포인트)를 집계하는 배열이고 A는 "상태 매트릭스"입니다. 상태 행렬을 계산 한 후 ode 해석기를 구현합니다. – marco
@marco : 당신이 몰랐을 경우에 MATLAB은 다양한 [ODE 해결 자] (http://www.mathworks.co.uk/help/techdoc/ref/ode23.html)를 내장하고 있으며 파이썬의 경우에는 [Scipy] (http://docs.scipy.org/doc/scipy/reference/integrate.html)에서 ODE 해결사를 찾을 수 있습니다. – James