【查表】常態分配表 |查表指令 |

【查表】常態分配表 |查表指令 |

計算機科學中,查找表(Lookup Table)是查詢操作替換運行時計算數組或者關聯數組這樣數據結構。

於內存中提取數值要複雜計算速度快很多,所以這樣得到速度提升是顯著。

一個經典例子三角函數表。

另外需要注意一個問題是,儘管查找表效率,但是如果替換計算話會得失,這因為內存中提取結果需要時間,而且因為它增大了所需內存並且破壞了高速緩存。

查表 Play

計算機出現之前,人們使用類表格來加快手工計算速度。

流行表格有三角、數、統計density函數。

另外一種用來加快手工計算工具是計算尺。

一些折衷方法是同時使用查找表和插值這樣需要少許計算量方法,這種方法於兩個預計算值之間部分能夠提供精度,這樣地增加了計算量但是地提高了應用程序所需精度。
查表

預先計算數值,這種方法保持精度前提下減小了查找表尺寸。

圖像處理中,查找表索引號輸出值建立聯繫。

顏色表作一種普通 LUT 是用來確定圖像中每一像素所要顯示顏色和強度。

另外需要注意一個問題是,儘管查找表效率,但是如果替換計算話會得失,這因為內存中提取結果需要時間,而且因為它增大了所需內存並且破壞了高速緩存。

如果查找表,那麼每次訪問查找表會導致高速緩存缺失,這處理器速度超過內存速度時候發成一個問題。

編譯器優化實例化(英語:rematerialization)(rematerialization)過程中會出現類問題。

一些環境如Java編程語言中,於制性邊界檢查帶來每次查找附加和分支過程,所以查找表可能開銷。

如何構建查找表有兩個基本約束條件,一個是可用內存數量;不能構建一個超過能用內存空間表格,儘管可以構建一個以查找速度代價基於磁盤查找表。
查表

另外一個約束條件是初始計算查找表時間——儘管這項工作需要做,但是如果耗費時間不可接受,那麼適合使用查找表。

許多計算機只能執行基本算術運算,而不能直接計算定值正弦值,它們使用如下面泰勒級數這樣複雜公式計算高精度正弦值:

sin

(
x
)

x

x

3

6

+

x

5

120

x

7

5040

{\displaystyle \operatorname {sin} (x)\approx x-{\frac {x^{3}}{6}}+{\frac {x^{5}}{120}}-{\frac {x^{7}}{5040}}}

(x接近0)然而,這樣計算費用可能是,是處理器上。

有許多應用程序,是傳統計算機圖形每秒需要幾千次正弦值計算。

如果指定輸入值,Simulink 執行“查找”操作,表中檢索對應輸出值。

查表 Play

延伸閱讀…

查找表- 維基百科,自由的百科全書

常態分配表

例如:
不幸的是,查找表需要空間:如果使用IEEE雙精度浮點數話,會需要16,000字節。

如果使用採樣點,那麼精度會地下降。

一個解決方案是線性插值,表中待計算點左右兩側兩個點值之間線,這個點對應直線上值計算點正弦值。

這種方法計算速度,於如正弦函數這樣函數來説有精度。
查表

這裏是使用線性插值一個例子:
查找表是輸入值映射到輸出值數據數組,於逼近數學函數。

給定一組輸入值,查找操作表中檢索對應輸出值。

如果查找表沒有顯式定義輸入值,Simulink® 可以使用內插、外插或舍入來估計輸出值,其中:查找表模塊使用數據數組輸入值映射到輸出值,來數學函數進行逼近。

如果指定輸入值,Simulink 執行“查找”操作,表中檢索對應輸出值。

延伸閱讀…

查表指令

關於查找表模塊- MATLAB & Simulink

如果查找表中義這些輸入值,模塊基於鄰近表值估算輸出值。

以下示例介紹了一個一維查找表,它於逼近函數 y = x3。

該查找表在輸入 (x) 範圍 [-3, 3] 內定義其離散輸出 (y) 數據。

下面表和圖説瞭輸入/輸出關係:如果輸入值為 -2,查找表查找並檢索對應輸出值 (-8)。

,如果輸入值為 3,查找表輸出對應值 27。

如果查找表模塊遇到輸入值與表中任何 x 值匹配情況,它會內插或外插答案。

例如,查找表沒有定義輸入值 -1.5;但是,模塊可以相鄰數據點 (xi, yi) 和 (xi+1, yi+1) 進行線性插值得出結果。

例如,給定以下兩個點:(xi, yi) 為 (-2,-8) (xi+1, yi+1) 為 (-1,-1),雖然查找表中沒有包含超出 [-3, 3] 範圍 x 值數據,但該模塊可以使用查找表任一端一對數據點進行外插值。

如果輸入值為 4,查找表模塊最近數據點 (2, 8) 和 (3, 27) 進行線性外插,從而估算出輸出值 46。

於用表進行查找和估算可能計算數學函數速度,所以進行模型時,使用查找表模塊可能提高速度。

下列情況下,可以考慮使用查找表代替數學函數計算: