CN103365827A - 一种高精度正弦/余弦函数的计算方法 - Google Patents
一种高精度正弦/余弦函数的计算方法 Download PDFInfo
- Publication number
- CN103365827A CN103365827A CN 201310263877 CN201310263877A CN103365827A CN 103365827 A CN103365827 A CN 103365827A CN 201310263877 CN201310263877 CN 201310263877 CN 201310263877 A CN201310263877 A CN 201310263877A CN 103365827 A CN103365827 A CN 103365827A
- Authority
- CN
- China
- Prior art keywords
- value
- tan
- iterative
- sine
- cosine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明涉及一种高精度正弦/余弦函数的计算方法,运用正切运算的泰勒展式得到高精度的正弦/余弦函数值;所述方法包括:设计三个子模块,分别是,相位细分模块,初值计算模块和迭代求解模块;其中,相位细分模块将需要求取三角函数相位值分为N份,N为正整数;初值计算模块计算得出细分后相位的正切值,并作为迭代初值;迭代求解模块将初值代入计算方程式进行迭代计算,迭代次数越多,所得正弦/余弦值计算精度越高;最后,运用正切与正余弦的变换公式可将迭代结果转换为对应待求相位的正弦/余弦值。
Description
技术领域
本发明涉及数字信号发生领域,尤其涉及一种高精度正弦/余弦函数值的计算方法。
背景技术
直接数字频率合成现已成为信号发生的重要设计方法,它的主要优点是输出频率、相位和幅度能够在数字处理器的控制下精确而快速地变换。相位-幅度变换器是直接数字频率合成器的重要组成部分,它的精度直接决定了输出正弦/余弦波的精度和纯度,因此,对正弦/余弦值的精确计算是重中之重。
目前,正弦/余弦函数数值的计算方法主要有查表法、插值法和CORDIC算法。在对相位和频率分辨率以及输出精度要求很高的场合,查表法会消耗大量的存储单元,这不仅增大了能耗,而且增加了芯片面积。CORDIC算法运用坐标旋转求取相应的正余弦值,它解决了资源的消耗问题,且非常适合在FPGA上实现,但CORDIC算法在固定迭代次数的情况下,计算的精度随待计算角度的变化而变化。因此,CORDIC算法在频率变化比较大的场合满足不了高精度的要求。
使用正弦和余弦的泰勒展开式或欧拉公式进行计算也可以满足高精度的要求,例如一种基于欧拉公式的高精度正弦/余弦函数计算方法(申请号:201210529384.7)和一种基于泰勒展开式的高精度正弦/余弦函数计算方法(申请号:201210527993.9)。但是基于正弦和余弦的泰勒展开式的计算方法在初值计算和迭代求解中需要同时计算正弦和余弦值,而基于欧拉公式的计算方法在初值计算和迭代求解中也需要在同时计算虚部和实部。使用基于正切泰勒展开式的计算方法在在初值计算和迭代求解中只需计算正切值就可以同时得到需要的正弦和余弦值。
直接数字频率合成在高端技术和军事技术,以及通信技术中有着较为广泛的需求,这就对它极微小的频率调谐和相位分辨能力,以及在两个频率之间的“跳跃”能力,提出了较高的要求,因而,设计一种计算精度与输入角度无关的正弦/余弦计算方法尤为重要。
发明内容
本发明的目的在于提出一种高精度正弦/余弦函数的计算方法,实现计算精度与输入角度无关的正弦/余弦计算方法。所述方法依据精细积分原理,可以求得在[0,2π]间任意相位高精度的正弦/余弦值。
本发明的技术方案是:
所述方法通过细分待求相位,根据正切泰勒展开公式求得小相位下的迭代初值,并迭代相应次数N(N为正整数),将迭代结果进行转换,进而得到所述待求相位下的正弦/余弦值;所述方法包括以下步骤:
步骤一,相位细分;将待求相位η细分为2N份,所述待求相位η的取值范围是[0,2π],细分后的相位τ0为:
τ0=η/2N (1)
步骤二,初值计算;针对细分后的相位代入正切的泰勒展开式进行复数值的计算,所述复数值的计算采用了泰勒展开式,理论上可以展开成无穷多项,但在实现时,考虑到高次幂对复数值的贡献很小,故取前四项参与运算:
tanτ0就是所述的迭代初值。
步骤三,迭代求解;所述迭代次数为步骤一中定义的N,N是正整数,迭代结果进行变换后得到待求相位η的正弦/余弦值,根据(3)可知,η=2N×τ0,迭代过程中每次参与迭代相位值都是前次参与迭代相位值的2倍,迭代公式基于正弦的倍角公式,第i+1(i=0,1,2,3,…N-1)次迭代的相位τi+1的正切值可以用第i次迭代相位τi的正切值计算得出,计算公式为:
所述迭代公式为
Ti+1=2Ti/(1-Ti 2) (5)
再通过正切与正/余弦的变换公式得到所述待求相位η的三角函数值
进一步的,所述的一种基于欧拉公式的高精度正弦/余弦函数的计算方法,对于任意一个相位值,计算误差都是独立的,不存在相位值之间的累积误差。
进一步的,所述的一种基于欧拉公式的高精度正弦/余弦函数的计算方法,迭代次数越多,正弦/余弦函数值越精确。
附图说明
图1为本发明算法框图;
图2为迭代计算流程图;
图3为迭代次数与精度的对应关系。
具体实施方式
参见图1,一种高精度正弦/余弦函数的计算方法的算法框图。
所述方法包括以下步骤:
步骤一,相位细分;将待求相位η细分为2N份,所述待求相位η的取值范围是[0,2π],细分后的相位τ0为:
τ0=η/2N (8)
步骤二,初值计算;针对细分后的相位代入正切的泰勒展开式进行复数值的计算,所述复数值的计算采用了泰勒展开式,理论上可以展开成无穷多项,但在实现时,考虑到高次幂对复数值的贡献很小,故取前四项参与运算:
tanτ0就是所述的迭代初值。
步骤三,迭代求解;所述迭代次数为步骤一中定义的N,N是正整数,迭代结果进行变换后得到待求相位η的正弦/余弦值,根据(1)可知,η=2N×τ0,迭代过程中每次参与迭代相位值都是前次参与迭代相位值的2倍,迭代公式基于正弦的倍角公式,第i+1(i=0,1,2,3,…N-1)次迭代的相位τi+1的正切值可以用第i次迭代相位τi的正切值计算得出,计算公式为:
所述迭代公式为
Ti+1=2Ti/(1-Ti 2) (11)
再通过正切与正/余弦的变换公式得到所述待求相位η的三角函数值
所述的一种高精度正弦/余弦函数的计算方法,对于任意一个相位值,计算误差都是独立的,不存在相位值之间的累积误差。迭代次数越多,正弦/余弦函数值越精确。计算结果与32位有效数字的正弦/余弦准确值的相对误差与迭代次数关系参见图3。
以上对本发明及其实施方式的描述,并不局限于此,附图中所示仅是本发明的实施方式之一。在不脱离本发明创造宗旨的情况下,不经创造地设计出与该技术方案类似的结构或实施例,均属本发明保护范围。
Claims (2)
1.一种高精度正弦/余弦函数的计算方法,其特征在于,该方法包括下述步骤:
步骤一,相位细分;将待求相位η细分为2N份,所述待求相位η的取值范围是[0,2π],细分后的相位τ0为:
τ0=η/2N (1)
步骤二,初值计算;针对细分后的相位代入正切的泰勒展开式进行复数值的计算,所述复数值的计算采用了泰勒展开式,理论上可以展开成无穷多项,但在实现时,考虑到高次幂对复数值的贡献很小,故取前四项参与运算:
tanτ0就是所述的迭代初值。
步骤三,迭代求解;所述迭代次数为步骤一中定义的N,N是正整数,迭代结果进行变换后得到待求相位η的正弦/余弦值,根据(1)可知,η=2N×τ0,迭代过程中每次参与迭代相位值都是前次参与迭代相位值的2倍,迭代公式基于正弦的倍角公式,第i+1(i=0,1,2,3,…N-1)次迭代的相位τi+1的正切值可以用第i次迭代相位τi的正切值计算得出,计算公式为:
所述迭代公式为
Ti+1=2Ti/(1-Ti 2) (4)
再通过正切与正/余弦的变换公式得到所述待求相位η的三角函数值
2.根据权利要求书1所述的一种高精度正弦/余弦函数的计算方法,其特征在于,迭代子模块的迭代次数越多,所得的正弦/余弦值的精度越高。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201310263877 CN103365827A (zh) | 2013-06-27 | 2013-06-27 | 一种高精度正弦/余弦函数的计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201310263877 CN103365827A (zh) | 2013-06-27 | 2013-06-27 | 一种高精度正弦/余弦函数的计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103365827A true CN103365827A (zh) | 2013-10-23 |
Family
ID=49367213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201310263877 Pending CN103365827A (zh) | 2013-06-27 | 2013-06-27 | 一种高精度正弦/余弦函数的计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103365827A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598432A (zh) * | 2013-10-30 | 2015-05-06 | 德克萨斯仪器股份有限公司 | 用于求解数学函数的计算机及方法 |
CN104636632A (zh) * | 2015-03-10 | 2015-05-20 | 中国人民解放军国防科学技术大学 | 高精度相位小存储量查表计算方法 |
CN107783756A (zh) * | 2016-08-31 | 2018-03-09 | 深圳市中兴微电子技术有限公司 | 一种获取角度相关值的方法和装置 |
CN111355679A (zh) * | 2020-03-18 | 2020-06-30 | 苏州华兴源创科技股份有限公司 | 一种数字通信的相角计算方法、装置和系统 |
-
2013
- 2013-06-27 CN CN 201310263877 patent/CN103365827A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598432A (zh) * | 2013-10-30 | 2015-05-06 | 德克萨斯仪器股份有限公司 | 用于求解数学函数的计算机及方法 |
US10430494B2 (en) | 2013-10-30 | 2019-10-01 | Texas Instruments Incorporated | Computer and methods for solving math functions |
CN104598432B (zh) * | 2013-10-30 | 2022-04-15 | 德克萨斯仪器股份有限公司 | 用于求解数学函数的计算机及方法 |
CN104636632A (zh) * | 2015-03-10 | 2015-05-20 | 中国人民解放军国防科学技术大学 | 高精度相位小存储量查表计算方法 |
CN107783756A (zh) * | 2016-08-31 | 2018-03-09 | 深圳市中兴微电子技术有限公司 | 一种获取角度相关值的方法和装置 |
CN111355679A (zh) * | 2020-03-18 | 2020-06-30 | 苏州华兴源创科技股份有限公司 | 一种数字通信的相角计算方法、装置和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101807089B (zh) | 输出信号偏移量任意可调的波形信号发生器 | |
CN103365827A (zh) | 一种高精度正弦/余弦函数的计算方法 | |
CN104199276A (zh) | 基于fpga的信号时差测量方法及时间数字转换器 | |
CN105974997A (zh) | 一种正弦波信号的数字实现方法 | |
CN104765713A (zh) | 基于分段查表三角函数实现fpga数字信号处理的方法 | |
CN107395123A (zh) | 一种基于gps秒脉冲的2的幂次方倍频方法 | |
CN103065039B (zh) | 一种基于欧拉公式的高精度正弦/余弦函数计算方法 | |
RU167428U1 (ru) | Преобразователь синусно-косинусного сигнала в код положения | |
CN104102471A (zh) | 一种应用fpga定点化技术实现指数cordic算法收敛域扩张的方法 | |
CN103049427A (zh) | 一种基于泰勒展开式的高精度正弦/余弦函数计算方法 | |
CN102789446A (zh) | 基于cordic算法的dds信号杂散抑制方法及系统 | |
CN105301354A (zh) | 一种乘性和加性噪声中谐波信号频率估计方法 | |
CN105866483B (zh) | 一种用dsp控制器生成正弦波信号的实现方法 | |
Shan et al. | Design and implementation of a FPGA-based direct digital synthesizer | |
Das et al. | Design and implementation of FPGA based linear all digital phase-locked loop | |
CN101854172A (zh) | 一种基于二维正弦表的数控振荡器并行设计方法 | |
Kuznetsov et al. | Nonlinear analysis of the Costas loop and phase-locked loop with squarer | |
CN104270095B (zh) | 基于cpld的单片方波信号倍频器及输出任意倍频信号的方法 | |
Wang et al. | High-precision design of DDS Based on FPGA | |
Mandal et al. | Design and implementation of digital demodulator for frequency modulated cw radar | |
Elrayyah et al. | A robust and efficient PLL algorithm for single-phase grid-connected renewable energy sources | |
Bittner et al. | Wavelet algorithm for circuit simulation | |
CN106291101B (zh) | 一种具有超分辨率的乘性和加性噪声中谐波信号频率估计方法 | |
CN113162618B (zh) | Dds无限跳频方法及系统 | |
CN102571077A (zh) | 获得特定高精度时钟的方法及电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20131023 |