2014-01-11 3 views
0

특정 열의 열만있는 행렬을 읽고 다시 쓰려고합니다. 예를 들어 나는 11 x n 매트릭스를하고 난 열만 2와 2 x n 매트릭스를 재 작성하려면, 3Fortran에서 행렬 읽기

program fluxXYlambda 
implicit none 

INTEGER*8::n,i 
REAL*8,ALLOCATABLE::dati(:,:) 

open(10,file='test.txt') 
n=0 

do 
    read(10,*,end=100) 
    n=n+1 
end do 
100 continue 
rewind(10) 

allocate(dati(11,n)) 

open(12,file='coordXY.txt') 

do i=1,n 
    read(10,*) dati(4,i),dati(5,i) 
    write(12,*) dati(4,i),dati(5,i) 
end do 

end program flussiXYlambda 

파일 coordXY.txt이 만들었지 만 비어 있습니다.

+0

'n'의 값을보고 당신이 예상 한대로 있는지 보았습니까? 또한'read (10, *) dati (4, i), dati (5, i)'는'test.txt'의 두번째와 세번째 컬럼을 읽지 않습니다. 'test.txt'의 레이아웃을 명확히 할 수 있습니까? – francescalus

+0

@ francescalus 네, 4 번째와 5 번째를 읽었습니다. 10 번째 열의 파일이있는 예일뿐입니다. 4 번째와 5 번째 걸릴 것입니다. (2 번째와 3 번째 걸릴 경우 동일합니다.) 논리적 인 단계는 변경되지 않습니다. . 'n'은 파일의 줄 수와 동일합니다. 나는 첫 번째 칸에서 그들을 셀다. –

+1

네 번째와 다섯 번째 칼럼을 읽지 않고 첫 번째와 두 번째 칼럼을 읽지 않는다. 읽은 숫자를 어디에 두어도 독서에는 영향을 미치지 않습니다. 이 칼럼들을 읽고 싶다면'read (10, *) dati (1 : 5, i)'와 같은 것이 필요할 것이다. 질문을 변경하여 예제 코드와 일치하도록하는 것이 좋습니다. – francescalus

답변

0

마지막으로 @francescalus 덕분에 문제가 해결되었습니다.

명령 read(10,*) dati(1:5,i)은 열 5까지 행렬 dati를 읽고 그 중 특정 열을 저장할 수 있습니다. 고마워요!