⑴ c語言 基本的加法、移位編寫程序
用cordic演算法可以實現
坐標旋轉數字計算機CORDIC(COordinate Rotation DIgital Computer)演算法,通過移位和加減運算,能遞歸計算常用函數值,如Sin, Cos,Sinh,Cosh等函數,由J. Volder於1959年提出 ,首先用於導航系統,使得矢量的旋轉和定向運算不需要做查三角函數表、乘法、開方及反三角函數等復雜運算。J. Walther在1974年用它研究了一種能計算出多種超越函數的統一演算法 。
詳見:http://ke..com/view/1800964.html?wtp=tt
⑵ stm32 在系統時鍾為72M的頻率下,做sin三角函數運算需要多長時間
你測試下,測試方法:
開始進入函數的時候啟動定時器,結束函數的時候停止定時器計數,然後讀取計數器的TC值,這樣就可以知道三角函數運算需要多長時間了。
我測試過C語言自帶的sin(x)函數,需要580個時鍾周期。
如果你需要用三角函數,那麼建議使用CORDIC演算法,這個編程簡單,實現周期值需要160個周期就可以達到4位精度(迭代16次,都是移位操作)。其實現的函數有:sin值,cos值,開根號,求正切值,比查表精度高,比系統三角函數使用空間小,畢竟是整型操作嘛。
⑶ 計算機能計算各種三角函數值的原理是什麼人因該怎麼算不同角度的三角函數值
計算機能計算各種三角函數值是因為有個數學庫,庫里含三角函數運算的子程序,程序員就不必自己從0開始去開發基本程序,直接調用即可。
庫里的三角函數運算我估計是用級數展開方式算得的。
不用計算機的庫,我們自己也可以用級數展開發,寫程序計算的,方法並不復雜。學過泰勒級數的人都可以寫。這里就不花時間去做這種重復勞動的工作了。
三角函數值,可用直角三角形3條邊的比例得到,或者用直角坐標系裡一個點與座標原點連線的夾角構成的三角形例如你可以計算。例如,P點的坐標是 (x,y), 原點O的坐標是 (0,0),斜邊PO長度 是 c=sqrt(x*x+y*y),sin() 就等於 y/c; cos() 就等於 x/c; tan() 就等於 y/x;
求近似解,你可以用量角器畫一個80度的角,構成直角三角形,用尺量出直角邊和斜邊長度,然後手算 x/c, y/c, y/x 即可。
上個世紀,人們通過查函數表的方法得到,例如 四位數學用表,它裡面有對數表,三角函數表,查表與插值得到結果。後來發明了計算尺,用尺拉,可以得到三角函數數值。你若能找到這種老古董,也可以用用玩玩,若對原始的東西有興趣。
s
⑷ 如何用CORDIC的FPGA演算法計算平方和開根號
用向量模式cordic演算法
輸入x,y
輸出x即為伸縮系數乘以sqrt(x^2+y^2)
⑸ 求利用cordic演算法來得到自然對數in(t)的verilog代碼,數據輸入是16位
這個在ise中有對應的IP核,看與cordic IP核相關的文檔即可。