作者civelant (阿痕)
看板TY_Research
標題Re: [問題] 如何計算平均風向?
時間Wed Dec 2 01:57:53 2009
wind //原始資料(就你說的那種配置0(360),90,180,270)
用三角函數
u //東西向風
v //南北向風
分解風向
u=sin(wind) //東西向風
v=cos(wind) //南北向風
avgu=(u1+u2+u3+u4...)/n //算好平均後...
avgui=avgu*1000 //先乘1000是為了下面那行如果用數學或專用函式解不出來 avgui設成
整數 , 把後面小數點忽略掉 , 乘1000是為了要取整數而又要避開大的誤差 , *1000再換
成整數應該就是原本取到小數第三位的結果
avgv=(v1+v2+v3+v4...)/n
avgvi=avgv*1000
sin(x) = avgui/1000
cos(x) = avgvi/1000 //兩行都成立下解出 x 應該就是你要的答案
至於上面這行怎麼用數學反解x...我忘了...
不過如果你是用程式寫的話
也許可以這樣測吧(下面這好像是類似fortran的寫法)
do i=0,3600,1 //從0開始跑到3600 每跑一次迴圈 i+1 ex:0,1,2,3....,3600
j=cos(i)*1000
k=sin(i)*1000 //j,k設整數 忽略掉後面的小數點
if((k .eq. avgui) .and. (j .eq. avgvi))
answer=i/10 //i設整數(int) answer設成 double 或 float
end if
end do
然後answer就是你要的答案了
不過我想如果是用氣象相關的程式的話 sin(x) = avgui/1000 和 cos(x) = avgvi/1000
想要求x 應該會有直接可以用的函式 , 如果手動算...那大概就是針對那兩行用數學解開x
※ 引述《ERQQ ()》之銘言:
: 我要計算一個氣象測站,在各月某幾天的平均風向,手上的資料是以北定義成0=360度
: 東=90度 西=270度 南=180度 以此類推
: 數據類似如下
: ...
: ...
: 43
: 42.8
: 42.8
: 37.1
: 222.7
: 275.4
: 275.4
: 275
: 每十分鐘一次
: 由於使用算數平均不準,會使結果偏南
: (例:北風350度與東風90度平均應為接近東北風的45度,可是平均後卻是接近西南風)
: 該如何正確 但是快速的處理數據呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.85.149
※ 編輯: civelant 來自: 59.112.85.149 (12/02 02:23)
推 ERQQ :哇嗚! 謝謝! 研究一下.. 12/02 07:19
※ 編輯: civelant 來自: 140.137.32.82 (12/02 11:14)
推 biostar :c大反應真快,解析幾何的算法這麼快就推演出來 12/02 18:18
→ seeback :推一下我已經忘記怎麼寫的程式語言XD 12/04 14:42