System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及cordic算法领域,具体而言,涉及基于cordic算法的向量模长计算方法和系统。
技术介绍
1、cordic(coordinate rotation digital computer)算法的核心思想是通过一系列的固定角度旋转来逼近目标函数的计算。这些旋转角度通常是2的幂次方的反正切值,可以通过查表得到。算法包括两种模式:旋转模式(rotation mode)和向量模式(vectoringmode)。旋转模式用于计算目标角度的正余弦值,而向量模式则用于将极坐标转换为笛卡尔坐标系。
2、通常cordic的电路引擎在计算模长mod时,因为算法的伪旋转时引入的固定误差存在,导致模长结果不能超过单位圆半径r的k倍。此限制会导致诸多问题,因为电路实现中基本会将初始向量的坐标限制在[-1,1]之间。其中有大部分的数据不可用,限制了电路的实用性和性能。
技术实现思路
1、本申请提供基于cordic算法的向量模长计算方法和系统,本申请通过对模长溢出的初始向量进行缩放,以解决cordic模长计算中,由于伪旋转误差导致的初始向量选择范围过小的问题。具体的,本申请的技术方案如下:
2、第一方面,本申请公开基于cordic算法的向量模长计算方法,包括:
3、获取初始向量的坐标,计算初始模长;判断所述初始向量在经过进行cordic算法向量模式迭代后是否会产生模长溢出;
4、若是,则在所述初始模长进行cordic算法向量模式迭代之前,将所述初始模长乘以
5、在进行cordic算法向量模式迭代结束后,对得到的计算结果乘以放大系数m,以得到最终模长计算结果。
6、在一些实施方式中,所述的获取初始向量的坐标,计算初始模长;判断所述初始模长在经过进行cordic算法向量模式迭代后是否会产生模长溢出;包括如下步骤:
7、获取所述初始向量的坐标(x,y);
8、计算初始模长p:
9、当所述初始模长p满足时;所述初始向量在经过进行cordic算法向量模式迭代后不会产生模长溢出;
10、其中,n为迭代次数;an是n次伪旋转后向量的模长被放大的误差系数;r为系统可表达的最大模长;
11、在一些实施方式中,当所述初始模长p满足p>r*k时;所述初始模长在经过进行cordic算法向量模式迭代后会产生模长溢出;
12、计算缩小系数n;所述缩小系数用于将会产生模长溢出的所述初始模长缩小为原来的n倍;
13、
14、其中,p为初始模长;r为系统可表达的最大模长;n为迭代次数;an是n次伪旋转后向量的模长被放大的误差系数。
15、在一些实施方式中,所述的基于cordic算法的向量模长计算方法,还包括:计算放大系数m;所述放大系数m用于将缩小后的模长结果恢复;
16、
17、其中,p为初始模长;r为系统可表达的最大模长。
18、在一些实施方式中,所述的基于cordic算法的向量模长计算方法,还包括:
19、设置所述初始向量的x坐标和y坐标的取值范围为[-t,t];其中,t为任意取值;
20、基于所述初始向量的取值范围,判断所述初始向量在经过进行cordic算法向量模式迭代后是否会产生模长溢出;
21、具体包括:
22、计算该取值范围内最大初始模长p,
23、当t取值满足时;所述初始向量在经过进行cordic算法向量模式迭代后不会产生模长溢出。
24、第二方面,本申请还公开基于cordic算法的向量模长计算系统,包括:
25、判断模块,用于获取初始向量的坐标,计算初始模长;判断所述初始向量在经过进行cordic算法向量模式迭代后是否会产生模长溢出;
26、缩放模块,用于若是,则在所述初始模长进行cordic算法向量模式迭代之前,将所述初始模长乘以缩小系数n,使得所述初始模长缩小为原来的n倍;
27、算法模块,用于执行cordic算法向量模式迭代;
28、所述缩放模块,还用于在进行cordic算法向量模式迭代结束后,对得到的计算结果乘以放大系数m,以得到最终模长计算结果。
29、在一些实施方式中,所述判断模块,还用于:获取所述初始向量的坐标(x,y);计算初始模长p:
30、当所述初始模长p满足时;所述初始向量在经过进行cordic算法向量模式迭代后不会产生模长溢出;
31、其中,n为迭代次数;an是n次伪旋转后向量的模长被放大的误差系数;r为系统可表达的最大模长;
32、在一些实施方式中,所述缩放模块,还用于当所述初始模长p满足p>r*k时;所述初始模长在经过进行cordic算法向量模式迭代后会产生模长溢出;
33、计算缩小系数n;所述缩小系数用于将会产生模长溢出的所述初始模长缩小为原来的n倍;
34、
35、其中,p为初始模长;r为系统可表达的最大模长;n为迭代次数;an是n次伪旋转后向量的模长被放大的误差系数。
36、在一些实施方式中,所述缩放模块,还用于计算放大系数m;所述放大系数m用于将缩小后的模长结果恢复;
37、
38、其中,p为初始模长;r为系统可表达的最大模长。
39、在一些实施方式中,所述判断模块,还用于设置所述初始向量的x坐标和y坐标的取值范围为[-t,t];其中,t为任意取值;基于所述初始向量的取值范围,判断所述初始向量在经过进行cordic算法向量模式迭代后是否会产生模长溢出;
40、具体包括:计算该取值范围内最大初始模长p,
41、当t取值满足时;所述初始向量在经过进行cordic算法向量模式迭代后不会产生模长溢出。
42、与现有技术相比,本申请至少具有以下一项有益效果:
43、本申请旨在解决cordic模长计算中,由于伪旋转误差导致的初始向量选择范围过小的问题,引入对初始向量的缩放,计算完成对模长复原的方法,可以将初始向量的选择范围无限扩大。
44、本申请在cordic圆周系统向量模式的旋转计算中提出一种新的方法,旨在解决旋转过程中由于误差因子和初始模长导致的旋转计算过程中,模长超出圆周半径的问题。此方法在不更改原有精度与性能等情况下,显著提高cordic算法可选择的初始向量范围,将其由圆周的部分范围,扩充到整个单位圆周甚至到半径为的圆周。
本文档来自技高网...【技术保护点】
1.基于CORDIC算法的向量模长计算方法,其特征在于,包括如下步骤:
2.如权利要求1所述的基于CORDIC算法的向量模长计算方法,其特征在于,所述的获取初始向量的坐标,计算初始模长;判断所述初始模长在经过进行CORDIC算法向量模式迭代后是否会产生模长溢出;包括如下步骤:
3.如权利要求2所述的基于CORDIC算法的向量模长计算方法,其特征在于:当所述初始模长P满足P>R*k时;所述初始模长在经过进行CORDIC算法向量模式迭代后会产生模长溢出;
4.如权利要求3所述的基于CORDIC算法的向量模长计算方法,其特征在于,还包括:计算放大系数M;所述放大系数M用于将缩小后的模长结果恢复;
5.如权利要求1-4任一项所述的基于CORDIC算法的向量模长计算方法,其特征在于,还包括:
6.基于CORDIC算法的向量模长计算系统,其特征在于,包括:
7.如权利要求6所述的基于CORDIC算法的向量模长计算系统,其特征在于:所述判断模块,还用于:获取所述初始向量的坐标(x,y);计算初始模长P:
8.如
9.如权利要求6所述的基于CORDIC算法的向量模长计算系统,其特征在于,所述缩放模块,还用于计算放大系数M;所述放大系数M用于将缩小后的模长结果恢复;
10.如权利要求6-9任一项所述的基于CORDIC算法的向量模长计算系统,其特征在于,所述判断模块,还用于设置所述初始向量的x坐标和y坐标的取值范围为[-t,t];其中,t为任意取值;基于所述初始向量的取值范围,判断所述初始向量在经过进行CORDIC算法向量模式迭代后是否会产生模长溢出;
...【技术特征摘要】
1.基于cordic算法的向量模长计算方法,其特征在于,包括如下步骤:
2.如权利要求1所述的基于cordic算法的向量模长计算方法,其特征在于,所述的获取初始向量的坐标,计算初始模长;判断所述初始模长在经过进行cordic算法向量模式迭代后是否会产生模长溢出;包括如下步骤:
3.如权利要求2所述的基于cordic算法的向量模长计算方法,其特征在于:当所述初始模长p满足p>r*k时;所述初始模长在经过进行cordic算法向量模式迭代后会产生模长溢出;
4.如权利要求3所述的基于cordic算法的向量模长计算方法,其特征在于,还包括:计算放大系数m;所述放大系数m用于将缩小后的模长结果恢复;
5.如权利要求1-4任一项所述的基于cordic算法的向量模长计算方法,其特征在于,还包括:
6.基于cordic算法的向量模长计算系统,其特征在于,包括:
【专利技术属性】
技术研发人员:魏凯,
申请(专利权)人:普冉半导体上海股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。