[問題] 一維矩陣資料 各元素比大小

看板Fortran作者 (天龍魯蛇)時間7年前 (2016/09/09 13:31), 7年前編輯推噓3(302)
留言5則, 5人參與, 最新討論串1/2 (看更多)
現在我有的資料如下: 12.1000000000000 11.5666666666667 9.40000000000000 10.0333333333333 . . . 11.7333333333333 共110筆數據,存成.txt檔,欲設計一個可計算Kendall係數的程式。 Kendall 相關係數的計算方法如下: 1. 將n組資料對(x,y),按x值的大小排列,使x1為最小、xn為最大,排列結果為( x1, y1 ), ( x2 , y2 ), ..., ( xn , yn )。其中,x 為自變數或影響變數,y 是應變數。 2. 檢視所有的n(n-1)/2 個yi 與 yj 的比較,計算當序號i > j 時 yi > yj 的個數 P,以及 yi < yj 的個數M,令S = P-M。 我自己寫的code如下: program project01 real,allocatable:: A(:) allocate( A(110) ); A=0. open(10,file='mtempnorth.txt') do i=1,110 read(10,*) A(i) end do close(10) do i=1,109 if(A(i+1)>A(i))then write(*,*)'p',i else if(A(i+1)==A(i))then write(*,*)i else write(*,*)'M',i end if end do stop end 但這樣子只能拿x1比一輪,我想要第二輪再拿x2與x3.x4...x110比大小,第三輪拿x3與 x4.x5...x110比大小,依此類推! 目前我只有想到寫109個do loop暴力法求解,有沒有更快的方法比完109輪且快速得到P與M 的個數? 小弟fortran新手QQ,八月才開始看彭國倫的書自學! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.190.65 ※ 文章網址: https://www.ptt.cc/bbs/Fortran/M.1473399092.A.E09.html ※ 編輯: e84011095 (140.112.190.65), 09/09/2016 13:34:53 ※ 編輯: e84011095 (140.112.190.65), 09/09/2016 14:23:13

09/09 14:45, , 1F
A是allocatable但是你沒有allocate,先解決這個問題
09/09 14:45, 1F
已修改,還是run time error ※ 編輯: e84011095 (140.112.190.65), 09/09/2016 16:06:09

09/09 16:14, , 2F
A(110) 當i=110時 i+1=111 A(111)=???
09/09 16:14, 2F
對齁~我好蠢... ※ 編輯: e84011095 (140.112.190.65), 09/09/2016 17:20:30 ※ 編輯: e84011095 (140.112.190.65), 09/09/2016 17:24:01

09/10 13:25, , 3F
第一部分就是標準的排序阿,找排序法的東西研究一下
09/10 13:25, 3F

09/11 08:18, , 4F
直接用maxloc,maxval函數取如何
09/11 08:18, 4F

09/18 02:17, , 5F
再寫一個迴圈
09/18 02:17, 5F
文章代碼(AID): #1Nqaaqu9 (Fortran)
文章代碼(AID): #1Nqaaqu9 (Fortran)