Fortran Coder

查看: 11100|回复: 4
打印 上一主题 下一主题

[求助] 各位前辈,麻烦帮忙看一下关于求相关系数的程序如何优化

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
39 元
贡献
18 点
跳转到指定楼层
楼主
发表于 2015-1-8 21:21:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
r=\frac{\sum_{i=1}^{n}({x}_{i}-\bar{x})({y}_{i}-\bar{y})}{\sqrt{\sum_{i=1}^{n}({x}_{i}-\bar{x})^{2}*\sum_{i=1}^{n}({y}_{i}-\bar{y})^{2}}}
各位大神 我想右边的公式来求左边的红框内的数和蓝框内的数的相关系数  
外面是我写的程序 想麻烦大神们给看看 有哪些地方需要改进(也就是优化该程序) 谢谢
程序运行是没有问题的 ,我只是想看看大家是如何优化这个程序的,看看熟手是如何来写程序的
[Fortran] 纯文本查看 复制代码
program main
 implicit none
 integer::i,c(3,4),a_1(3,2),a(6),b_1(3,2),b(6)
 real amean,bmean,sfenzi,sfenmu_1,sfenmu_2,coefficient

 open(12,file=1.txt')
 read(12,*)c

 a_1=c(:,1:2)
 b_1=c(:,3:4)

 a=reshape(a_1,(/6/))  
 b=reshape(b_1,(/6/))

 amean=real(sum(a))/real(size(a))
 bmean=real(sum(b))/real(size(b))

 write(*,*)"a=",a
 write(*,*)"b=",b
 write(*,*)"amean=",amean
 write(*,*)"bmean=",bmean

 sfenzi=0.0
 sfenmu_1=0.0
 sfenmu_2=0.0
 do i=1,size(a)
     sfenzi=sfenzi+(real(a(i))-amean)*(real(b(i))-bmean)
     sfenmu_1=sfenmu_1+(real(a(i))-amean)**2
     sfenmu_2=sfenmu_2+(real(b(i))-bmean)**2
 end do 

 coefficient=sfenzi/sqrt(sfenmu_1*sfenmu_2)

 write(*,*)"coefficient=",coefficient
 stop 
 end program




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

713

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
612 元
贡献
313 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-1-8 21:53:09 | 只看该作者
[Fortran] 纯文本查看 复制代码
Program main
 Implicit None
 Integer , parameter :: N = 6
 Real :: a(N) , b(N) 
 Real :: amean , bmean , sfenzi = 0.0 , sfenmu_1 = 0.0 ,sfenmu_2 = 0.0 , coefficient
 Integer :: i
 Open(12,file='1.txt')
 Read(12,*) a , b
 Close(12)
 amean= sum(a) / N
 bmean= sum(b) / N
 write(*,*)"a=",a
 write(*,*)"b=",b 
 write(*,*)"amean=",amean
 write(*,*)"bmean=",bmean
 Do i = 1 , N
   sfenzi = sfenzi + ( a(i)-amean ) * ( b(i)-bmean )
   sfenmu_1 = sfenmu_1 + (a(i)-amean)**2
   sfenmu_2 = sfenmu_2 + (b(i)-bmean)**2
 End Do 
 coefficient=sfenzi/sqrt(sfenmu_1*sfenmu_2)
 write(*,*)"coefficient=",coefficient
End Program main

5

帖子

2

主题

0

精华

入门

F 币
39 元
贡献
18 点
板凳
 楼主| 发表于 2015-1-8 22:12:22 | 只看该作者
谢谢 弱弱地问一句 你为什么喜欢用空格 我感觉这样很费劲啊  比如amean= sum(a) / N
为什么不写成amean=sum(a)/N

713

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
612 元
贡献
313 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2015-1-8 22:25:46 | 只看该作者
好看,唉,打字快就是任性

5

帖子

2

主题

0

精华

入门

F 币
39 元
贡献
18 点
5#
 楼主| 发表于 2015-1-8 22:29:52 | 只看该作者
哎 牛人就是任性  晚安
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-20 21:04

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表