Re: [問題] 未知大小矩陣讀取的問題

看板Fortran作者 (疲憊...)時間15年前 (2009/08/11 21:37), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串3/4 (看更多)
我嘗試使用terryys版友的建議寫出來了 在這邊野人獻曝一下 program main implicit none integer n,i character row real,allocatable:: a(:,:) n=0 !先讀取檔案判斷矩陣階數 open (11,file='matrix.txt',status='old') do while(.not. eof(11)) read(11,*) row n=n+1 enddo allocate ( a(n,n) ) rewind(11) !將讀取位置回到檔案開頭 do i=1,n !將檔案讀進矩陣中 read(11,*) a(:,i) 11 format (I3) enddo write(*,*)'The input matrix a =' !先在螢幕上print出讀取的檔案狀況 write(*,*) a !以確認讀取無誤 end 不過老實說我對於a(:,i)的意思還並不是很了解 剛剛翻了一下書也沒找到這個指令的詳細說明 還是請高手們給點方向吧! 感謝 再次跟提供意見的板友們致謝^^ -- 正妹!!! 幹!跟你說過要先看看你自己的臉... \ / ○ ︵ \○ ╱/| . . ﹎ ﹍﹍ ╱ ̄﹚╱> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.128.150 ※ 編輯: openfire 來自: 61.227.128.150 (08/11 21:39)

08/11 22:01, , 1F
a(:,i)的意是指第一個維度1~n,而第二個維度是i的
08/11 22:01, 1F

08/11 22:01, , 2F
所有a矩陣的元素
08/11 22:01, 2F

08/11 22:02, , 3F
明白的說 假設n=3的話 a(:,i)的用法
08/11 22:02, 3F

08/11 22:03, , 4F
就等於a(1,i),a(2,i),a(3,i)
08/11 22:03, 4F

08/12 11:55, , 5F
也就是說先跑i的迴圈 看i的範圍來決定n的大小摟?
08/12 11:55, 5F

08/13 10:08, , 6F
因為你這樣宣告allocate(a(n:n))
08/13 10:08, 6F

08/13 10:09, , 7F
所以這樣寫read(11,*)a(1,i),a(2,i),a(3,i)
08/13 10:09, 7F

08/13 10:09, , 8F
會等於read(11,*)a(:,i)
08/13 10:09, 8F

08/13 10:10, , 9F
裡面的冒號代表的是1~n
08/13 10:10, 9F
文章代碼(AID): #1AWNGR8S (Fortran)
文章代碼(AID): #1AWNGR8S (Fortran)