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
создается, но пуст.
Вы пробовали посмотреть значение 'n', чтобы узнать, так ли оно так, как вы ожидаете? Кроме того, ваши 'read (10, *) dati (4, i), dati (5, i)' не читают второй и третий столбцы 'test.txt'. Можете ли вы уточнить макет 'test.txt'? – francescalus
@ francescalus да, читает 4-й и 5-й, это всего лишь пример с файлом из 10 столбцов, и я хочу взять 4-й и 5-й (это то же самое, если я хочу взять 2-й и 3-й), логические шаги не меняются , 'n' - это то, что число строк в файле. Я считаю их в первом do cicle –
Он не читает четвертый и пятый столбцы, но первый и второй. Когда вы помещаете прочитанные числа, это не влияет на чтение. Если вы хотите прочитать эти столбцы, вам понадобится нечто вроде 'read (10, *) dati (1: 5, i)'. Возможно, также может быть лучше, если вы можете изменить вопрос, чтобы он соответствовал вашему примеру. – francescalus