Arrays 多维阵列的线性模拟

Arrays 多维阵列的线性模拟,arrays,language-agnostic,linear-algebra,multidimensional-array,Arrays,Language Agnostic,Linear Algebra,Multidimensional Array,我知道如何使用[x+y*width]作为线性索引来模拟线性阵列中的二维阵列 我可以将其扩展到3d阵列:[x+y*宽度+z*宽度*高度] N维数组有一个通用公式吗 我在寻找一个语言不可知论的答案。当然。仅扩展您的示例就给出了x+y*宽度+z*宽度*高度+w*宽度*高度*深度+… 换句话说,dim1+dim2*size1+dim3*size1*size2+dim4*size1*size2*size3+…呃,如果您想要一些代码…:-)C语言足够不可知了,是吗 假设输入:位置[尺寸] 假设一个表存在ma

我知道如何使用
[x+y*width]
作为线性索引来模拟线性阵列中的二维阵列

我可以将其扩展到3d阵列:
[x+y*宽度+z*宽度*高度]

N维数组有一个通用公式吗


我在寻找一个语言不可知论的答案。

当然。仅扩展您的示例就给出了
x+y*宽度+z*宽度*高度+w*宽度*高度*深度+…


换句话说,
dim1+dim2*size1+dim3*size1*size2+dim4*size1*size2*size3+…

呃,如果您想要一些代码…:-)C语言足够不可知了,是吗

假设输入:位置[尺寸]

假设一个表存在maxBound[dimensions],其中包含表中每个维度的最大边界

int index = 0;
int multiplier = 1;
for (int i = 0;i < dimensions;i++)
{
  index += location[i] * multiplier;
  multiplier *= maxBound[i];
}
我认为这是有道理的,但这只是我的想法

Test:
location = [3,4,5]
maxBound = [10,20,30]
loop initial: index = 0, multiplier = 1.
loop i=0: index = 3, multiplier = 10.
loop i=1: index = 43, multiplier = 200.
loop i=2: index = 1043, multipler = 6000.