看板 Fortran 關於我們 聯絡資訊
現在我有的資料如下: 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
terryys: A是allocatable但是你沒有allocate,先解決這個問題 09/09 14:45
已修改,還是run time error ※ 編輯: e84011095 (140.112.190.65), 09/09/2016 16:06:09
rex0707: A(110) 當i=110時 i+1=111 A(111)=??? 09/09 16:14
對齁~我好蠢... ※ 編輯: e84011095 (140.112.190.65), 09/09/2016 17:20:30 ※ 編輯: e84011095 (140.112.190.65), 09/09/2016 17:24:01
kkarthur: 第一部分就是標準的排序阿,找排序法的東西研究一下 09/10 13:25
janhon: 直接用maxloc,maxval函數取如何 09/11 08:18
jubilee2: 再寫一個迴圈 09/18 02:17