[问题] 一维矩阵资料 各元素比大小

楼主: 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