gpt4 book ai didi

创建 4D 查找表

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:10 26 4
gpt4 key购买 nike

我需要根据以下内容创建快速 4D 查找表:1- 它将接收 4 个输入变量 (u,v,i,j),每个变量的范围从 0 到 152-查找表返回一个预先计算好的8位值我怎样才能用 C 语言的非常快速的代码实现这个 4D 查找表

最佳答案

就在栈上做一个4维数组。 16^4 字节的大小应该适合大多数平台上的堆栈,否则将其设置为静态或全局。它为编译器提供了关于布局的完整知识,它是一种众所周知且常用的语言结构,应该优化得很好:

  uint8_t lookup[16][16][16][16];   // global table about 64KB 


int main(int, char **)
{
...

当然你可以制作一维数组uint8_t lookup[16*16*16*16]然后乘以你的值lookup[u*16*16*16 + v*16* 16 + i*16 + j] 但我非常怀疑你是否能够使它比 4-dim 数组(编译器在内部进行这种乘法)的性能更高

由于您询问的是初始化,这里是一个如何初始化 4 维数组的示例。为简单起见,它只是 [4][4][4][4],因此您必须将其增加到 16(16 个 block ,每行 16 行,16 个系列的 16 个数字。

uint8_t test[4][4][4][4]= {
{ // [0][x][y][z]
{ 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 },
{ 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 },
{ 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 },
{ 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 } },

{ // [1][x][y][z]
{ 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 },
{ 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 },
{ 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 },
{ 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 } },

{ // [2][x][y][z]
{ 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 },
{ 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 },
{ 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 },
{ 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 }, { 3, 3, 3, 3 } },

{ // [3][x][y][z]
{ 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 },
{ 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 },
{ 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 },
{ 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 }, { 4, 4, 4, 4 } }
};

关于创建 4D 查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083089/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com