久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4330|回復: 3
打印 上一主題 下一主題
收起左側

自己得出的浮點數近似算法

[復制鏈接]
跳轉到指定樓層
樓主
ID:140343 發表于 2016-9-24 19:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    近來工作中發現了一種浮點數運算的近似算法,也不知道前人有沒有這樣應用過,反正自己到目前還沒見過,就暫且稱作自己發現的。如有類同,純屬巧合。本算法對嵌入式編程的人有很大用處,其他領域就不知道了。現整理如下,希望對需要的人有所幫助。 -
    大家都知道,乘法相對好運算些,也有現成的公式可以分解、簡化,使其運算簡單符合自己的要求,但除法有時卻找不到什么公式可以把它分解的符合自己的要求,特別是對做8位機編程的人,浮點數運算很占空間又影響執行速度,所以一般都需要化成整數進行運算
舉例如下:
10位AD采集,最大值是1023,如果需要利用AD采集結果對輸出進行連續控制,就需要對AD進行細分,假設細分500份,那么每份就是1023/500=2.046,假如只取整數部分,則最大值時會有較大誤差,假如用浮點數則輸出 =
實際值/2.046,但8位MCU不喜歡浮點數,那么此時就要換一種方法,如下:
1.把最大值分為可被細分數整除的整數部分+小數部分,如被500除1023可分為1000+23;被300除可分為900+123;
2.把能被整除的整數部分除以除數得出最小細分整數部分,如1000/500=2;900/300=3;
3.把實測數除以最小細分數得得出修正前的整數;
4.把修正前的整數乘以步驟1中的尾數部分再除以滿刻度值,得出修正數,把修正前的數減去修正數得出最終所需倍數,既所需要的結果;另外滿刻度值最好是根據實際取一定的舍取值。例如,如果10位AD可取1000(其實取滿刻度值應該除以1023,至于取1000是為了使偏差減小,不至于使輸出結果超調),如果是8位AD可取250(其滿刻度值是255,取250也是為了在采集值快達到滿刻度值時防止輸出結果超調,當然直接使用滿刻度值也是可以的,為了防止超調要對輸出結果做一個限幅).
例如1:對10位AD,滿刻度1023分成500份,1023可分成1000+23,令z=1023/500=2.046,假設當前實測值x是635,那么此實測值x對應的輸出值應是y=x/2.046=635/2.046=310,假如MCU不采用浮點數,z=1023/500=2,那么MCU算出的輸出值是y=x/2=635/2=317,比實際值大了7個點;按照上面的公式,把y乘以尾數23除以1000得出修正數w=y×23/1000=317×23/1000=7,按照步驟5把y減去修正數即得出與實際沒有誤差的結果y-w=317-7310
例如2:對于8位AD,滿刻度255分成100份,255可分成200+55,令z=255/100=2.55,假設當前實測值x是226,那么此實測值x對應的輸出值應是y=x/2.55=226/2.55=88,假如MCU不采用浮點數,z=255/100=2,那么MCU算出的輸出值是y=x/2=226/2=113,比實際值大了25個點;按照上面的公式,把y乘以尾數55除以250得出修正數w=y×55/250=113×55/250=24,按照步驟5把y減去修正數即得出與實際沒有誤差的結果y-w=113-2489 ,與88只差一個點;假設當前實測值x是滿刻度值255,那么此實測值x對應的輸出值應是y=x/2.55=255/2.55=100,假如MCU不采用浮點數,z=255/100=2,那么MCU算出的輸出值是y=x/2=255/2=127,比實際值大了27個點;按照上面的公式,把y乘以尾數55除以250得出修正數w=y×55/250=127×55/250=27,按照步驟5把y減去修正數即得出與實際沒有誤差的結果y-w=127-17100 ,沒有誤差不會超調。
如有異議請指正。以上純屬個人經驗,對套用出錯者不負任何責任,如若轉載請注明出處!


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:712493 發表于 2020-6-10 17:39 | 只看該作者
挺有意思的算法 ,挖一下
回復

使用道具 舉報

板凳
ID:311731 發表于 2024-8-29 10:00 | 只看該作者
fj51hei 發表于 2020-6-10 17:39
挺有意思的算法 ,挖一下

樓主探索精神難能可貴
回復

使用道具 舉報

地板
ID:1039430 發表于 2024-9-22 17:05 | 只看該作者
這倒是個實用的算法
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区观看 | 国产高清在线精品 | 国产精品一区一区三区 | 在线视频国产一区 | 国产精品美女久久久久久久久久久 | 久久久久久久久久久久亚洲 | 欧美不卡视频一区发布 | 羞羞视频在线观免费观看 | jizz视频 | 黄色免费网站在线看 | 在线观看成年视频 | 成人欧美一区二区三区 | 日日操操操 | 久久国产高清 | 日韩成人av在线播放 | 日韩精品一区二区在线 | 国产一区久久 | 麻豆av在线免费观看 | 日韩午夜激情 | 国产一区免费视频 | 日本中文字幕日韩精品免费 | 午夜免费在线电影 | 香蕉超碰| 天天看天天操 | 一区二区三区免费 | 欧美国产精品 | 久久久久久久久淑女av国产精品 | 日韩在线日韩 | 国产jizz女人多喷水99 | 国产精品美女久久久 | 中文字幕欧美日韩一区 | 一区二区三区四区在线视频 | 久久久久国产精品一区二区 | 99pao成人国产永久免费视频 | 波多野结衣精品在线 | 久久久精品一区二区三区 | 国产精品久久久久久久午夜 | 成人av看片| 91精品国产综合久久久久久 | 精品在线一区二区三区 | 四虎影视免费观看 |