URL: http://127.0.0.1:9200/likecs_art_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [text] => Array
                        (
                            [query] => 利用CORDIC算法计算三角函数
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [text] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 8
    [from] => 0
)
RESPONSE:
string(8072) "{"took":39,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":52.41101,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"128129","_score":52.41101,"_source":{"id":"128129","text":"\u5229\u7528CORDIC\u7b97\u6cd5\u8ba1\u7b97\u4e09\u89d2\u51fd\u6570","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"gjblog","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1614700233"},"highlight":{"text":["#em#利#/em##em#用#/em##em#CORDIC#/em##em#算#/em##em#法#/em##em#计#/em##em#算#/em##em#三#/em##em#角#/em##em#函#/em##em#数#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"22591","_score":35.194805,"_source":{"id":"22591","text":"CORDIC\u7b97\u6cd5\uff081\uff09\uff1a\u5706\u5468\u65cb\u8f6c\u6a21\u5f0f\u4e0b\u8ba1\u7b97\u4e09\u89d2\u51fd\u6570\u548c\u6a21\u503c","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"ncdxlxk","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1640709927"},"highlight":{"text":["#em#CORDIC#/em##em#算#/em##em#法#/em#(1):圆周旋转模式下#em#计#/em##em#算#/em##em#三#/em##em#角#/em##em#函#/em##em#数#/em#和模值"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"416269","_score":27.664787,"_source":{"id":"416269","text":"\u5229\u7528\u6768\u8f89\u4e09\u89d2\u548c\u9636\u4e58\u8ba1\u7b97\u7ec4\u5408\u6570","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"somedayLi","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1633055876"},"highlight":{"text":["#em#利#/em##em#用#/em#杨辉#em#三#/em##em#角#/em#和阶乘#em#计#/em##em#算#/em#组合#em#数#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"531845","_score":26.647848,"_source":{"id":"531845","text":"Js\u6c42\u89d2\u5ea6\u3001\u4e09\u89d2\u5f62\u3001\u5f27\u5ea6\u8ba1\u7b97\n    \n\n\n\n\n\n            JS\u4e2dMath\u51fd\u6570\u7684\u5e38\u7528\u65b9\u6cd5","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"BluceLee","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1640939042"},"highlight":{"text":["Js求#em#角#/em#度、#em#三#/em##em#角#/em#形、弧度#em#计#/em##em#算#/em#\n    \n\n\n\n\n\n            JS中Math#em#函#/em##em#数#/em#的常#em#用#/em#方#em#法#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"698439","_score":26.334072,"_source":{"id":"698439","text":"JS\u5b9e\u73b0\u8ba1\u7b97\u5668\uff0c\u5e26\u4e09\u89d2\u51fd\u6570\uff0c\u6839\u53f7","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"smileZAZ","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1635961271"},"highlight":{"text":["JS实现#em#计#/em##em#算#/em#器,带#em#三#/em##em#角#/em##em#函#/em##em#数#/em#,根号"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"459976","_score":25.705013,"_source":{"id":"459976","text":"\u4f7f\u7528CORDIC\u7b97\u6cd5\u6c42\u89e3\u89d2\u5ea6\u6b63\u4f59\u5f26\u53caVerilog\u5b9e\u73b0","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"lazypigwhy","tagsname":null,"tagsid":"","catesname":"","catesid":"","createtime":"1633778430"},"highlight":{"text":["使#em#用#/em##em#CORDIC#/em##em#算#/em##em#法#/em#求解#em#角#/em#度正余弦及Verilog实现"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"442379","_score":25.57395,"_source":{"id":"442379","text":"\u8ba1\u7b97\u6307\u6570\u51fd\u6570\u7684\u7b97\u6cd5","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"skyivben","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1633503699"},"highlight":{"text":["#em#计#/em##em#算#/em#指#em#数#/em##em#函#/em##em#数#/em#的#em#算#/em##em#法#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"408065","_score":25.57395,"_source":{"id":"408065","text":"\u8ba1\u7b97\u6307\u6570\u51fd\u6570\u7684\u7b97\u6cd5","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"skyivben","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1632926229"},"highlight":{"text":["#em#计#/em##em#算#/em#指#em#数#/em##em#函#/em##em#数#/em#的#em#算#/em##em#法#/em#"]}}]}}"
URL: http://127.0.0.1:9200/likecs_art_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [text] => Array
                        (
                            [query] => 利用CORDIC算法计算三角函数
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [text] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 8
    [from] => 8
)
RESPONSE:
string(7559) "{"took":49,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":52.41101,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"541066","_score":25.57395,"_source":{"id":"541066","text":"\u8ba1\u7b97\u6307\u6570\u51fd\u6570\u7684\u7b97\u6cd5","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"zhchoutai","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1634672247"},"highlight":{"text":["#em#计#/em##em#算#/em#指#em#数#/em##em#函#/em##em#数#/em#的#em#算#/em##em#法#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"462149","_score":25.392763,"_source":{"id":"462149","text":"cordic\u7b97\u6cd5\u7684fpga\u5b9e\u73b0","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"lianjiehere","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1633836822"},"highlight":{"text":["#em#cordic#/em##em#算#/em##em#法#/em#的fpga实现"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"362099","_score":25.0793,"_source":{"id":"362099","text":"\u5229\u7528\u51fd\u6570\u9012\u5f52\u8ba1\u7b97\u9636\u4e58 - Milo_lu","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"lumao1122-Milolu","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1632114376"},"highlight":{"text":["#em#利#/em##em#用#/em##em#函#/em##em#数#/em#递归#em#计#/em##em#算#/em#阶乘 - Milo_lu"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"868088","_score":24.744907,"_source":{"id":"868088","text":"\u5229\u7528\u52a8\u6001\u89c4\u5212\u7b97\u6cd5\u89e3\u51b3\u6570\u5b57\u4e09\u89d2\u5f62\u95ee\u9898","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"gezhaoatdlnu","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1638069058"},"highlight":{"text":["#em#利#/em##em#用#/em#动态规划#em#算#/em##em#法#/em#解决#em#数#/em#字#em#三#/em##em#角#/em#形问题"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"427450","_score":24.474968,"_source":{"id":"427450","text":"\u6768\u8f89\u4e09\u89d2\u7b97\u6cd5","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"zkkysqs","tagsname":null,"tagsid":"","catesname":"","catesid":"","createtime":"1633239701"},"highlight":{"text":["杨辉#em#三#/em##em#角#/em##em#算#/em##em#法#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"462147","_score":24.417137,"_source":{"id":"462147","text":"CORDIC\u7b97\u6cd5\u7684FPGA\u5b9e\u73b0 - CrazyBirdLin","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"CrazyBirdLin","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1633836818"},"highlight":{"text":["#em#CORDIC#/em##em#算#/em##em#法#/em#的FPGA实现 - CrazyBirdLin"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"977932","_score":24.267422,"_source":{"id":"977932","text":"\u8ba1\u7b97\u4e09\u89d2\u5f62\u9762\u79ef","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"liuyongliu","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1639884331"},"highlight":{"text":["#em#计#/em##em#算#/em##em#三#/em##em#角#/em#形面积"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"798618","_score":24.213043,"_source":{"id":"798618","text":"\u6570\u503c\u5206\u67901\uff1a\u4e09\u89d2\u51fd\u6570\u7684\u8ba1\u7b97\uff08C\u8bed\u8a00\u5b9e\u73b0\uff09","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"chaofeng","tagsname":"","tagsid":"","catesname":"","catesid":"","createtime":"1637105902"},"highlight":{"text":["#em#数#/em#值分析1:#em#三#/em##em#角#/em##em#函#/em##em#数#/em#的#em#计#/em##em#算#/em#(C语言实现)"]}}]}}"
URL: http://192.168.101.128/searchcore/index.php/cihere_cn_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [title] => Array
                        (
                            [query] => 利用CORDIC算法计算三角函数
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [title] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [from] => 0
)
RESPONSE:
bool(false)
URL: http://127.0.0.1:9200/likecs_down_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [bool] => Array
                (
                    [must] => Array
                        (
                            [0] => Array
                                (
                                    [match] => Array
                                        (
                                            [title] => Array
                                                (
                                                    [query] => 利用CORDIC算法计算三角函数
                                                )

                                        )

                                )

                        )

                    [must_not] => Array
                        (
                            [0] => Array
                                (
                                    [term] => Array
                                        (
                                            [cate1] => 电子书籍
                                        )

                                )

                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [title] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 5
    [from] => 0
)
RESPONSE:
string(2928) "{"took":9,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":5739,"relation":"eq"},"max_score":22.797625,"hits":[{"_index":"likecs_down_db","_type":"_doc","_id":"70159","_score":22.797625,"_source":{"id":"70159","title":"Sprintf\u51fd\u6570\u7684\u7528\u6cd5 WORD\u7248","spidertime":"1623125330","contenttime":"1672170413","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/170417\/0914405a5X.png","tag":"Sprintf|\u51fd\u6570|\u7528\u6cd5","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u5176\u5b83\u76f8\u5173","attr1":"24.8KB"},"highlight":{"title":["Sprintf#em#函#/em##em#数#/em#的#em#用#/em##em#法#/em# WORD版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"35043","_score":22.797625,"_source":{"id":"35043","title":"Sprintf\u51fd\u6570\u7684\u7528\u6cd5 WORD\u7248","spidertime":"1622959884","contenttime":"1675930703","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/170417\/0914405a5X.png","tag":"Sprintf|\u51fd\u6570|\u7528\u6cd5","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u5176\u5b83\u76f8\u5173","attr1":"24.8KB"},"highlight":{"title":["Sprintf#em#函#/em##em#数#/em#的#em#用#/em##em#法#/em# WORD版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"103185","_score":22.76833,"_source":{"id":"103185","title":"js\u5b9e\u73b0\u81ea\u52a8\u5bfb\u8def\u7b97\u6cd5-js A*\u7b97\u6cd5","spidertime":"1626169300","contenttime":"1626255298","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/170911\/1J246232064.png","tag":"\u5bfb\u8def\u7b97\u6cd5","cate1":"js\u6846\u67b6","cate2":"ajax\/javascript","attr1":"7KB"},"highlight":{"title":["js实现自动寻路#em#算#/em##em#法#/em#-js A*#em#算#/em##em#法#/em#"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"95865","_score":21.236786,"_source":{"id":"95865","title":"\u7f51\u9875\u7248\u79d1\u5b66\u8ba1\u7b97\u5668 \u4e8c\u8fdb\u5236\u8ba1\u7b97\u5668 \u5728\u7ebf\u5341\u516d\u8fdb\u5236\u8ba1\u7b97\u5668","spidertime":"1623212469","contenttime":"1670723963","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/121206\/_153G6159.gif","cate1":"js\u6846\u67b6","cate2":"ajax\/javascript","attr1":"9.51KB"},"highlight":{"title":["网页版科学#em#计#/em##em#算#/em#器 二进制#em#计#/em##em#算#/em#器 在线十六进制#em#计#/em##em#算#/em#器"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"216","_score":21.236786,"_source":{"id":"216","title":"\u7f51\u9875\u7248\u79d1\u5b66\u8ba1\u7b97\u5668 \u4e8c\u8fdb\u5236\u8ba1\u7b97\u5668 \u5728\u7ebf\u5341\u516d\u8fdb\u5236\u8ba1\u7b97\u5668","spidertime":"1622859597","contenttime":"1622859597","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/121206\/_153G6159.gif","cate1":"js\u6846\u67b6","cate2":"ajax\/javascript","attr1":"9.51KB"},"highlight":{"title":["网页版科学#em#计#/em##em#算#/em#器 二进制#em#计#/em##em#算#/em#器 在线十六进制#em#计#/em##em#算#/em#器"]}}]}}"
利用CORDIC算法计算三角函数 - 爱码网
gjblog

这里主要先介绍如何利用CORDIC算法计算固定角度\(\phi\)\(cos(\phi)\)\(sin(\phi)\)值。

一般利用MATLAB计算三角函数时,用\(cos\)举例,只需要输入相应的\(cos(\phi)\)便自动计算出来了。但是如果是硬件处理或者没有那么方便的函数时,该如何计算\(cos(\phi)\)的值呢?

有一种最傻瓜的方式是用rom存储\(0^o\)\(90^o\)所有的余弦值,然后用查表的方法计算,但随着精度要求的提升,需要存储的值会越来越多,这是不合适的。那么有没有一种用较少资源且能较快计算出高精度三角函数值的方法呢?有!这就是CORDIC算法可以做的事,算法不难,有一点三角函数和移位运算的基础就能看懂了,核心思想是数形结合计算三角函数,计算过程把乘法运算变成移位运算。

为什么说是数形结合呢,让我们看下如何通过旋转求\(cos\phi\)\(sin\phi\)。如下图可以看出,如果让初始坐标\((x_1, y_1)\)\(x\)轴一个特定的位置,最后使其旋转\(\phi^o\)到坐标\((x_n,y_n)\)处,且满足\(\sqrt{x_n^2 + y_n^2} = 1\),那么\(cos\phi\)不就等于\(x_n\)\(sin\phi\)不就等于\(y_n\)了吗,这是后话。

下面首先引入一个在圆上的坐标旋转公式(不一定单位圆):

\[\begin{cases} x_2 = x_1cos\theta - y_1sin\theta \\ y_2 = x_1sin\theta + y_1cos\theta \tag{1}\\ \end{cases} \]

注:\((1)\)的推导

\[\begin{cases} x_1 = Acos\alpha\\ y_1 = Asin\alpha \tag{1.1} \end{cases} \]

其中\(A\)为旋转圆半径,\(\alpha\)\((x_1, y_1)\)的角度值,图中红线与x轴夹角。则坐标\((x_2, y_2)\)可以写为:

\[\begin{cases} x_2 = Acos(\alpha + \theta) = A(cos\alpha cos\theta - sin\alpha sin\theta) = x_1cos\theta - y_1sin\theta \\ y_2 = Asin(\alpha + \theta) = A(sin\alpha cos\theta + cos\alpha sin\theta) = x_1sin\theta + y_1cos\theta \tag{1.2} \end{cases} \]

推导完毕。

我们继续看式\((1)\)\((1)\)也可以写成:

\[\begin{cases} x_2 = cos\theta(x_1 - y_1tan\theta) \\ y_2 = cos\theta(y_1 + x_1tan\theta)\tag{2} \\ \end{cases} \]

由于对\((x_2, y_2)\)相当于同乘了一个常数\(cos\theta\),不影响旋转角度,只影响旋转后坐标到原点的距离。我们先不看它,得到:

\[\begin{cases} x_2 = x_1 - y_1tan\theta \\ y_2 = y_1 + x_1tan\theta \tag{3} \\ \end{cases} \]


一:乘法变移位

之前说的我们要把乘法运算变成移位运算,所以我们找到\(tan\theta\)\(2^{-i}\)之间的对应关系,注意由于是变成移位操作,所以对应旋转的角度也是几个固定的值,但是通过旋转这几个固定的角度,旋转\(i\)次,最终也一定能转到我们需要的角度\(\phi\)上(\(-99.7^o\le\phi \le 99.7^o\))。

于是把\((3)\)再改写为:

\[\begin{cases} x(i+1) = x(i) - d(i)y(i)2^{-i} \\ y(i+1) = y(i) + d(i)x(i)2^{-i}\tag{4} \end{cases} \]

这样,旋转\(\theta^o\)就变成了移位、相加的操作。注意\(d(i) = ±1\)表示旋转的逆、顺时针。

比如要旋转\(\phi = 66^o\),可以先转\(+45^o\)\(45^o < 66^o\),再转\(+26.565^o\)\(45^o+26.565^o \ge 66^o\),再转\(-14.036^o \cdots\),最终会逼近\(66^o\)。而整个运算仅仅进行了\(2^{-0}、2^{-1}、2^{-2} \cdots\)移位操作和加法操作。


二:cos累乘项

现在考虑把\(cos\theta\)加回去,回到\((2)\),且考虑旋转方向\(d_i\)和旋转角度\(\theta_i\),得到:

\[\begin{cases} x_2 = cos\theta_1(x_1 - d_1y_1tan\theta_1) \\ y_2 = cos\theta_1(y_1 + d_1x_1tan\theta_1)\tag{5.1} \\ \end{cases} \]

进行下一次迭代(旋转),得到:

\[\begin{align} x_3 &= cos\theta_2(x_2 - d_2y_2tan\theta_2) \notag\\ &= cos\theta_2(cos\theta_1(x_1 - d_1y_1tan\theta_1)- d_2cos\theta_1(y_1 + d_1x_1tan\theta_1)tan\theta_2) \notag\\ &= cos\theta_1cos\theta_2(x_1 - d_1y_1tan\theta_1 - d_2y_1tan\theta_2 - d_2d_1x_1tan\theta_1tan\theta_2)\notag \end{align} \notag\\ \]

\[\begin{align} y_3 &= cos\theta_2(y_2 + d_2x_2tan\theta_2) \notag\\ &= cos\theta_2(cos\theta_1(y_1 + d_1x_1tan\theta_1) + d_2cos\theta_1(x_1 - d_1y_1tan\theta_1)tan\theta_2) \tag{5.2}\\ &= cos\theta_1cos\theta_2(y_1 + d_1x_1tan\theta_1 + d_2x_1tan\theta_2 - d_2d_1y_1tan\theta_1tan\theta_2)\notag \end{align} \]

可以看到每次旋转都可以提取出\(cos\theta_i\)\(tan\theta_i\)已经用移位替代了。接下来只用计算\(\prod_{i=1}^{N}cos\theta_i\)就行了,且\(\prod_{i=1}^{N}cos\theta_i\)只跟迭代次数有关,大概收敛到0.607。确定了迭代次数后,可以预先把\(\prod_{i=1}^{N}cos\theta_i\)算出来。


三:累计旋转角度与旋转方向

现在考虑最后一个问题,如何确定每次迭代的旋转方向\(d_i\)呢?其实定义一个累计旋转角度\(z_i\)

\[z_{i + 1} = z_i -d_i\theta_i = z_i -d_i2^{-i} \tag{6} \]

\(z_1\)等于目标角度值,然后每次迭代作个判断就好,如果\(z_i > 0\),说明当前旋转还没转到目标角度,\(d_{i+1} = 1\);如果\(z_i < 0\),说明当前旋转超过了目标角度,\(d_{i+1} = -1\)

当我们最终转到了目标角度\(\phi\)时,比如\(\phi = 66^o\),可以此时\(z_i\)已经很小趋近于零了。

另外,在作比较判断时,单次旋转角度\(\theta_i\)则还是需要通过查一次\(arctan(2^{-i})\)表得到,但这个表比起文章开头说的傻瓜式查表要小太多了。


四:计算cos和sin值

由开始所说的数形结合可以推出,假设只旋转一次把\((x_1, y_1)\)转到\((x_n, y_n)\),有:

\[\begin{cases} x_n = x_1cos\phi - y_1sin\phi \\ y_n = x_1sin\phi + y_1cos\phi \tag{7}\\ \end{cases} \]

按第一节所说的,把一次就旋转到位用很多次旋转替代,每次旋转后坐标到原点的距离比上一次都大了\(\frac{1}{cos\theta_i}\)倍,所以如果我们把\((x_1, y_1)\)设为\((\prod_{i=1}^n cos\theta_i, 0)\),那么最后\((x_n, y_n)\)到原点的距离就为1,\(cos\phi\)就等于\(x_n\)\(sin\phi\)就等于\(y_n\)

这样就只用通过\((4)(6)\)的移位、相加、一次查表,再迭代十多次,就能计算\(cos\phi\)\(\sin\phi\)值啦!

其实用CORDIC算法还能计算arctan、sinh、cosh等值,以后学习了再来补充进阶版。


五:完整MATLAB代码

clc, clear, close all;

%% 初始计算cos累乘值
N = 16; % 设置迭代次数16次
Nprod(1) = 1;
for i = 1 : N
    Nprod(i + 1) = Nprod(i) * cos(atan(2^(-(i - 1))));
end

%% Cordic算法计算cos、sin值
x(1) = Nprod(N); % 横坐标初始值赋为cos累乘值
y(1) = 0; % 纵坐标初始值赋为0
z(1) = 66 / 180 * pi; %目标旋转角度值,66°,注意转化成弧度值
d(1) = 1; %旋转方向,初始肯定为1


for i = 1 : N
    x(i + 1) = x(i) - d(i) * y(i) * 2^(-(i - 1)); %移位运算,公式(4)
    y(i + 1) = y(i) + d(i) * x(i) * 2^(-(i - 1)); %移位运算,公式(4)
    z(i + 1) = z(i) - d(i) * atan(2^(-(i - 1))); %计算累计旋转角度,查一次表,公式(6)
    if z(i + 1) >= 0 % 判断下一次的旋转方向
        d(i + 1) = 1;
    else
        d(i + 1) = -1;
    end
end

COS = x(N) % 输出cos66的值
SIN = y(N) % 输出sin66的值

六:参考文章

[1]:https://mp.weixin.qq.com/s/c4oro0bOhdDUmBt0yyLpTA

[2]:https://blog.csdn.net/qq_39210023/article/details/77456031

分类:

技术点:

相关文章:

  • 2021-10-10
  • 2021-09-20
  • 2021-11-28
  • 2021-10-03
  • 2021-10-10
  • 2021-12-19
  • 2021-11-17
猜你喜欢
  • 2021-12-29
  • 2021-10-01
  • 2021-12-31
  • 2021-11-04
  • 2021-10-09
  • 2021-10-06
相关资源
相似解决方案