Cordic 算法的原理介紹


 

cordic 算法知道正弦和余弦值,求反正切,即角度。

采用用不斷的旋轉求出對應的正弦余弦值,是一種近似求解發。

旋轉的角度很講求,每次旋轉的角度必須使得 正切值近似等於 1/(2^N)。旋轉的目的是讓Y軸趨近與0。把每次旋轉的角度累加,即得到旋轉的角度和即為正切值。

比如Y軸旋轉45度,則值減小1/2;

   再旋轉26.56505°,再減少1/4;

   再旋轉角度14.03624º,再減少1/8; 依次減少1/16, 1/32......,最后Y軸的值無限小,趨近於0 。

比如X=1, Y=1,的角度,角度是45°。經過一次旋轉,要使得Y=0,這個角度必須是45°。

 

 

 

 

 

 

如上圖

如圖中,直角坐標系中點(X0,Y0)逆時鍾旋轉角度θ,變換成坐標(X1,Y1),那么用X0,Y0,以及θ的三角函數,如果表示X1,Y1呢?

請想象,如果坐標也旋轉角度θ,那么X1,Y1的坐標依然是(X0,Y0)。接着往下看:

看完以上這副圖,就該明白這個等式了:

x1= x0cos θ − y0sin θ
y1= x0sin θ + y0cos θ

再把這個式子化成正切函數。

 

 

Cordic 算法的思想是通過迭代的方法,不斷的旋轉特定的角度(這個特定的角度就是使得 Y為上次的1/2),使得累計旋轉的角度的和無限接近某一設定的角度,

每次旋轉的角度的θ = arctan( 1/(2^n) );

具體迭代如下表:Z0 =30°,Y0=0,X0 = 0.6073

輸入30°,經過9次迭代后, Z0 = 0,Y0=0.5006, X0 = 0.8657

x '(i +1)= ( x 'i− y 'i(σi)2−i)
y '(i +1)= ( x 'i(σi)2−i+ y 'i)

(當 i = 0)
x '1= 0.607 − 0 ⋅ (+1 ) ⋅ 1 = 0.607

y '1= 0.607 ⋅ (+1 ) ⋅ 1 + 0 = 0.607

 通過Cordic算法后,得到y9=0.5006 (=sin(30°))

                                 x9=0.8657 (=cos(30°))

所以也可以用cordic算法求出正切值的。

 

或者求反正切值:

計算公式:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM