爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5699|回复: 4

[其他] ncl计算余弦相似度

[复制链接]

新浪微博达人勋

发表于 2019-3-12 20:48:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 Ariena 于 2019-3-16 20:27 编辑

用ncl计算两个500hPa高度场之间的余弦相似度,一个eof所得平均高度场,另一个共有3203个高度场,分别与平均场进行计算,计算结果发现,3203个场余弦相似度都是1,不知道问题出在哪里,求大神解答。附上计算公式以及ncl脚本。

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"  
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"  
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/contrib/run_cor.ncl"


begin
  diri = "e:/paper/eof/hgt/"
  fin1 = addfile(diri+"hgt3-00.nc", "r")
  eof_hgt0 = fin1->hgt(:,{10:70},{50:160})
  eof_hgt = dim_avg_n_Wrap(eof_hgt0, 0)

  diri3 = "e:/data/"
  fin4 = addfile(diri3+"all-hgt.nc", "r")
  hgt0 = fin4->hgt(:,{10:70},{50:160})

cosr = new((/3203/),"float")

b = sum(eof_hgt(:,:)*eof_hgt(:,:))
print(b)

do k=0,3202

      a = sum(eof_hgt(:,:)*hgt0(k,:,:))
      c = sum(hgt0(k,:,:)*hgt0(k,:,:))

      cosr(k) = a/sqrt(b*c)

end do

print(cosr)

diri4 = "e:/paper/cos/"
asciiwrite(diri4+"cosr.txt", cosr)

end

余弦相似度公式

余弦相似度公式
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-3-12 21:10:20 | 显示全部楼层
附上计算所用的数据

data.rar

12.93 MB, 下载次数: 4, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-3-14 15:20:51 | 显示全部楼层
和相关系数有什么区别?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-3-14 16:42:20 | 显示全部楼层
银燕 发表于 2019-3-14 15:20
和相关系数有什么区别?

余弦相似度从方向上是考察向量之间的相似程度,相关系数是线性相关性吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-3-15 15:26:33 | 显示全部楼层
Ariena 发表于 2019-3-14 16:42
余弦相似度从方向上是考察向量之间的相似程度,相关系数是线性相关性吧

相关系数是是一种特例,余弦相似度更像是一种投影,维度可以更高

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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