基于cordic算法的大数据向量倾角计算.docxVIP

  • 0
  • 0
  • 约4.21千字
  • 约 6页
  • 2023-11-03 发布于湖北
  • 举报

基于cordic算法的大数据向量倾角计算.docx

基于cordic算法的大数据向量倾角计算 1 其他相关算法的设计 f已广泛用于当今的数字领域。但FPGA实现数字系统也有其自身的局限性,其一是器件资源的门阵列规模的限制,其二是单元延迟限制,所以,这就需要设计者充分考虑器件的实际工作能力。 角度的旋转计算在数字领域尤其是数字通信领域是一种应用非常广泛的计算,如果用传统的除法器、乘法器等计算方法,需要占用大量的FPGA资源,这样就不能满足设计者的要求,需要设计者考虑其他的算法实现这种类型的计算。 CORDIC算法在硬件电路的实现上只用到了加法器和移位器,这样就大大节约了FPGA的资源,从而可以满足设计者的要求。 2 [xyj]选取中的构造背景及求解 CORDIC(Coordinate Rotation Digital Computer),又名:坐标旋转数字计算,是J.Voider等人于1959年在设计美国航空导航控制系统的过程中提出来的一种算法。下面就简要地介绍一下CORDIC算法的基本数学思想。 如图1所示,向量Ο→AOA?逆时针旋转θ度角得到向量Ο→BOB?,这个关系可以用矩阵表示如式1: [XjYj]=[cosθ-sinθsinθcosθ][XiYi]=cosθ[1-tanθtanθ1][XiYj](1)[XjYj]=[cosθ?sinθsinθcosθ][XiYi]=cosθ[1?tanθtanθ1][XiYj](1) 如果假设θ是由n个θn角度叠加而成的,那么根据式(1)得出每一步的叠加操作需要按照式(2)行 [Xn+1Yn+1]=cosθn[1-tanθntanθn1][XnYn](2)[Xn+1Yn+1]=cosθn[1?tanθntanθn1][XnYn](2) 利用式2经过n步叠加可以表示由向量Ο→AOA?旋转到向量Ο→BOB?,如下表示: [XjYj]=cosθ0?cosθ1...cosθn[1-tanθ0tanθ01]...[1-tanθntanθn1][XiYi](3)[XjYj]=cosθ0?cosθ1...cosθn[1?tanθ0tanθ01]...[1?tanθntanθn1][XiYi](3) 由于计算机进行计算采用二进制形式,所以我们选取θn=arctan(12n),这样选取θn方便了tanθn的计算,即tanθn=Sn2-n,式3前面的cosθn可以取累乘的极限即: Κ=∞∏n=0cosθn=∞∏n=0cos[arctan(12n)]≈0.607253 如果我们在设计的系统中提前计算K,那么当抛开K不算时,式(2)就可以表示成式(4): [Xn+1Yn+1]=[1-Sn2-nSn2-n1][XnYn]θ=m∑i=0Siθi(Si={-1,1})(4) 至此,我们可以得出结论,由向量Ο→A,在先计算K的情况下,我们可以由式4逐步的计算旋转角度后得出向量Ο→B。计算的精度由n的大小决定,式(4)中的Sn由每一步的具体情况而定。 3 计算角度和向的运算 利用CORDIC算法可以进行许多运算,比如计算角度正弦、角度余弦、复数的乘法、向量的角度和模的运算等等。下面就介绍两种CORDIC算法的实际应用实例: (1) ,[2-n]的逻辑描述 这个问题我们可以转换为利用CORDIC这种向量旋转的思想进行解析,建模如下(见图2): 起始向量Ο→A为[Xi,Yi,θi]= 终止向量Ο→B为[Xj,Yj,θj]=[cosθ,sinθ,θ] 由Ο→A经过n步旋转到Ο→B,即可以得到cosθ 设:Zn表示经过n步旋转后,得到的结果与θ的差值,即:Ζn=θ-n∑i=0θi,通过这样的假设,就可以得到: Sn={1Ζn≥0-1Ζn<0(5) 将(4)和(5)式结合,就可以得到它的逻辑表述: IF Z(n) = 0 X(n+1)=X(n)-Y(n)×2-n Y(n+1)=Y(n)+X(n)×2-n Z(n+1)=Z(n)-arctan(2-n) ELSE X(n+1)=X(n)+Y(n)×2-n Y(n+1)=Y(n)-X(n)×2-n Z(n+1)=Z(n)+arctan(2-n) (2) [九]选取参数构造[1yn0-1yn] 这个问题我们可以转换为利用CORDIC这种向量旋转的思想进行解析,建模如下(见图3): 如图3所示,为了方便对角度θ的计算,我们旋转了一下坐标轴,可以推断出起始向量Ο→A为[Xi,Yi,Zi]=[Xi,Yi,0] 终止向量Ο→B为[Xj,Yj,Zj]=[R,0,-θ] 设Ζn=∞∑n=0θn,就可以得到: Sn={1Yn≤0-1Yn0(6) 将式(4)和式(6)结合,就可以得到它的逻辑表述: IF Y(n)=0 X(n+1)=X(n)-Y(n)×2-n Y(n+1)=Y(n)+X(n)×2-n Z(n+1)=Z(n)-arctan(2-n) E

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档