2014-01-11 5 views
0

Я пытаюсь прочитать и переписать матрицу, содержащую только определенную серию столбцов. Например у меня есть 11 x n матрицу, и я хочу, чтобы переписать его в 2 x n матрице только графах 2 и 3.Чтение матрицы в Fortran

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' - это то, что число строк в файле. Я считаю их в первом do cicle –

+1

Он не читает четвертый и пятый столбцы, но первый и второй. Когда вы помещаете прочитанные числа, это не влияет на чтение. Если вы хотите прочитать эти столбцы, вам понадобится нечто вроде 'read (10, *) dati (1: 5, i)'. Возможно, также может быть лучше, если вы можете изменить вопрос, чтобы он соответствовал вашему примеру. – francescalus

ответ

0

И наконец, я решаю проблему благодаря @francescalus.

Команда read(10,*) dati(1:5,i) читает матрицу dati до столбца 5, и я могу сохранить отдельные столбцы. Большое спасибо !

Смежные вопросы