• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 3 4 5 »


Re: 角度平均計算
#46
資深會員
資深會員


查看用戶資訊
感謝您重貼一遍。這篇我有看到,實在還是不了解它為什麼是正確答案,

雖然 Eigen 網友很盡心,algorithm 也很精彩,只是勸您再核對一兩下‧‧‧

發表於: 2007/5/11 23:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#45
資深會員
資深會員


查看用戶資訊
抱歉~忘了講了...
智慧財產聲明此演算法由:Eigen 所提供

w=(x+y+z)/3;
a=0;
if(x>=270) a+=1;
if(x<= 90) a+=4;

if(y>=270) a+=1;
if(y<= 90) a+=4;

if(z>=270) a+=1;
if(z<= 90) a+=4;

if(a== 6) w+=120;
if(a== 9) w+=240;
--------------------------------------
分析:
n1 n2 n3 ~ nx 共 x 個角度
假設 n1 ~nx 為依 大小排列,要能算振動的平均角度,則 nx-n1 < 180度。
w= (n1+n2+n3 +...+nx)/x
for(a=0, i =1 ;i <=x i++){
if(ni >=270 ) a+=n+1;
if(ni <=90 ) a+=1;
}
if( a>n+1) w+= 360/n*(a%n+1)

發表於: 2007/5/11 21:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#44
資深會員
資深會員


查看用戶資訊
首先恭賀 hellowanz 網友找到所需的解答。

不過,我往前翻了半天,不知道哪一篇才是正確答案? 我找不到,有誰能明示一下是哪一篇文章嗎? (日期時間是 2007/5/? ??:??:?? 的)

357, 91, 92 的平均值標準答案應該是 60 對不對?

發表於: 2007/5/11 18:24
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#43
資深會員
資深會員


查看用戶資訊
使用Eigen大大所提供的Solution,確實能正常的平均角度,在此提供這項資訊給大家參考,也非常感謝Eigen大大的智慧,若有興趣者可以記下此演算法,也許那一天用得到哩。畢竟也是花了幾天所想出來的精華,可別白費了,越多人使用,越有價值。

發表於: 2007/5/10 22:17
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#42
資深會員
資深會員


查看用戶資訊

計算出的角度範圍是0~359.9度,不會有大於360度的值出現,角度感測出來是絶對角度,並非相對角度。
角度變化量要看這個感測的物件翻轉的速度而定,原則上不會翻很快,兩次的取樣應該不會大於90度。

假定 sensor --> 360度 絕對角度 SO 361 = 1 ; 721 = 1 ......
物理行為 ---> 擺盪 ( 兩次的取樣應該不會大於90度。)

=============

由 cheng100 貼於 2007/5/8 16:45:36

我想這個問題是要預測一抖動物體靜止後最終位置.
譬如指針式重量計,一個胖子突然往秤台一跳.造成指針劇烈抖動.在指針尚未靜止之前.我要立刻得知重量.若重量計轉一圈為100kg(0kg),而指針剛開始在90與30之間抖動,然後慢慢衰減
95--25,100--20.....

==============================

但不知是否如 CHENG100 大所言 為趨於靜止平衡 ?

如單為 取得平均角度:

X[1 ,2,3,4,........N]
BIG = .F.
SMALL = .F.
TOTAL = X[1]
XX = X[1]
FOR i = 2 TO N
.
. IF (XX >= 270 & X[i] < 180) THEN
. X[i] = (360 + X[i] )
. ELSE
. IF XX <= 90 & X[i] > 181
. THEN X[i] = ( 360 - X[i]
. ENDIF
. ENDIF
. XX = X[i]
. TOTAL = TOTAL + X[i]
NEXT
AVE = TOTAL / N

如擺盪是固定在某一 90 度 區間 內 可用此法
如會一直延伸出去 則需再加其他判斷式

如為 cheng100 大 所言 則應該抓兩端極點 再求出衰減率 以求出穩定點




發表於: 2007/5/9 17:03
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#41
中級會員
中級會員


查看用戶資訊
Hi !!! 你還看得真仔細,

if(new_angle >= 180) new_angle = new_angle - 360;
if(new_angle <= -180) new_angle = new_angle + 360;

表示新角度差值大於 180 度或小於-180 度時作角度差值調整
將角度差值調整為相反方向, 因為此方向的夾角角度較小,
這是因為你有提到角度以 0 ~ 359.9 的角度來表示。

例: 前平均角度為 1, 新值為 350

角度差為 350 - 1 = 349 (實際值為 11)
大於 180 的條件成立, 調整為 349 - 360 = -11 (得正確值)
-------------------------------------------------------------------

前平均角度為 355, 新值為 30
角度差為 30 - 355 = -325 (實際值為 35)
小於180 的條件成立, 調整為 -325 + 360 = 35 (得正確值)
-------------------------------------------------------------------

至於你提了其中唯一的特例角度差 180 度,
因為剛好在正對面, 所以要不要在剛好差 180 度時調整就看你高興了,
如果改為

if(new_angle > 180) new_angle = new_angle - 360;
if(new_angle < -180) new_angle = new_angle + 360;
在角度差超過 180 度時才調整, 嗯..嗯.....效果一樣呢!! 哈! 哈!

不過你不也提到了抖動的角度差會在 90 度內嗎,
那不理會它也沒關係吧!


發表於: 2007/5/9 0:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#40
資深會員
資深會員


查看用戶資訊
To C_H_M
這機制在你貼上來之前已有加入程式中了,Sensor輸出的穩定度運算就是靠它,但Sensor輸出的值並非角度,而是物理量的值,只是...有一個疑問
if(new_angle >= 180) new_angle = new_angle - 360;
設new_angle=180 new_angle=180-360=-180
接下來
if(new_angle <= -180) new_angle = new_angle + 360;
new_angle=-180+360=180又回到原來的值了,看不太懂這邊。

發表於: 2007/5/8 23:47
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#39
資深會員
資深會員


查看用戶資訊
To cheng100
我試了6組角度來試算
1. 359-180=179 0-180=-180 1-180=-179
(179+180+179)/3+180=359.333近似0,ok
2. 330-180=150 20-180=-160 50-180=-130
(150+160+130)/3+180=326.6667,但應該為13.333
3. 80-180=-100 90-180=-90 100-180=-80
(100+90+80)/3+180=270,但應該為90
4. 179-180=-1 180-180=0 181-180=1
(1+0+1)/3+180=180.66667近似180,ok
5. 269-180=89 270-180=90 271-180=91
(89+90+91)/3+180=270 ,正解
6. 272-180=92 274-180=94 276-180=96
(92+94+96)/3+180=274 ,正解
角度大部份都對,有幾個角度有錯,是不是我又有那裡算錯的地方?
我還是非常感謝你能提供此演算法,在我所使用的角度必需精準的算出角度,有些答案會近似正確答案,不適用在這個專案中,還是很感謝這個方法,也可提供其他人參考這個方法。

To Eigen
以上試算的角度使用你的演算法都能正確的算出角度,等有時間,我再加到我的程式中直接計算看看,如果都能正確無誤的平均出角度,到時我再回報給各位大大知曉。


發表於: 2007/5/8 22:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#38
初級會員
初級會員


查看用戶資訊
我想這個問題是要預測一抖動物體靜止後最終位置.
譬如指針式重量計,一個胖子突然往秤台一跳.造成指針劇烈抖動.在指針尚未靜止之前.我要立刻得知重量.若重量計轉一圈為100kg(0kg),而指針剛開始在90與30之間抖動,然後慢慢衰減
95--25,100--20.....
把問題抽像化後,就成了數學問題了.所以這只是利用數學幫助解決問題.利用"平均偏差 +平均值"就能正確預測這位老兄的重量(該減肥了),不管你的取樣時間在哪裡開始,在哪裡結束,結果完全一致.數學的威力!

發表於: 2007/5/8 16:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 角度平均計算
#37
中級會員
中級會員


查看用戶資訊
如果不是純要計算數學的平均值,
而只是希望降低sensor輸入訊號抖動的輸入均值的話!
那試試以下的方法吧! 看看合不合你的需求。

double average_angle, new_angle;
average_angle = 0;
...
...
...
...
...
// 以下這段請放在 sensor 取樣後的處理程式中

new_angle = (角度 sensor 輸入) - average_angle;
if(new_angle >= 180) new_angle = new_angle - 360;
if(new_angle <= -180) new_angle = new_angle + 360;
average_angle = average_angle + (new_angle / 20);
if(average_angle < 0) average_angle = average_angle + 360;
if(average_angle >= 360) average_angle = average_angle - 360;

// 係數 20 的地方會影響平均值的反應速度, 小一點反應快, 大一點反應慢
// 但是也會影響平均的效果, 小一點均值的效果好, 大一點均值的效果差
...
...
...
...
...

發表於: 2007/5/8 15:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------