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

作者: e84011095 (天龍魯蛇)   2016-09-09 13:31:29
現在我有的資料如下:
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,八月才開始看彭國倫的書自學!
作者: terryys (terry)   2016-09-09 14:45:00
A是allocatable但是你沒有allocate,先解決這個問題
作者: rex0707 (我就是我)   2016-09-09 16:14:00
A(110) 當i=110時 i+1=111 A(111)=???
作者: kkarthur (aa)   2016-09-10 13:25:00
第一部分就是標準的排序阿,找排序法的東西研究一下
作者: janhon (海牛)   2016-09-11 08:18:00
直接用maxloc,maxval函數取如何
作者: jubilee2 (3321)   2016-09-18 02:17:00
再寫一個迴圈

Links booklink

Contact Us: admin [ a t ] ucptt.com