问题标签 [n-dimensional]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1084 浏览

java - 我需要创建一个带有坐标的 n 维点。构造函数应该采用任意数量的坐标。

这个项目还有很多,但我不知道如何开始我坚持如何创建一个带有数组的构造函数,该数组将在一个点上采用未知数量的维度。

0 投票
0 回答
84 浏览

convex-hull - n维空间中两个凸集的交集

令 $X={x_1,\ldots,x_p}$ 和 $Y={y_1,\ldot,y_q}$ 为 $\mathbb{R}^n$ 中的两组点。有没有一种方法可以找到 $\mathrm{conv}(X)\cap \mathrm{conv}(Y)$ 为 $\mathrm{conv}(Z)$,其中 $Z$ 是 $\mathbb{ 的某个子集R}^n$?

0 投票
1 回答
7713 浏览

opencl - OpenCL:工作项、处理元素、NDRange

我和我的同学第一次接触 OpenCL。正如预期的那样,我们遇到了一些问题。下面我总结了我们遇到的问题和我们找到的答案。但是,我们不确定我们是否一切顺利,所以如果你们能看看我们的答案和下面的问题,那就太好了。

为什么我们不把它分成单个问题?

  1. 它们部分地相互关联。
  2. 我们认为这些是典型的初学者问题。咨询过的同学都说:“嗯,也不懂。”

工作项与处理元素

在我看过的大多数关于 OpenCL 的讲座中,他们都使用相同的插图来介绍计算单元和处理元素以及工作组和工作项。这导致我和我的同学们不断地混淆这些概念。因此,我们现在提出了一个定义,强调处理元素与工作项非常不同:

  • 工作项是正在执行的内核,而处理元素是代表实际执行计算的事物的抽象模型。工作项是仅暂时存在于软件中的东西,而处理元素抽象出物理上存在于硬件中的东西。但是,取决于硬件,因此取决于 OpenCL 实现,工作项可能会映射到由所谓的处理元素表示的某个硬件并由其执行。

问题1:这是正确的吗?有没有更好的表达方式?

ND范围

这就是我们对NDRange概念的理解:

  • NDRange 大小表示存在的工作项的数量。通常,这也被称为全局大小。但是,NDRange 可以是一维、二维或三维(“ND”):
    • 一维问题将是一些线性向量的计算。如果向量的大小为 64,并且有 64 个工作项来处理该向量,则 NDRange 大小等于 64。
    • 二维问题是对图像的一些计算。在 1024x768 图像的情况下,NDRange 大小 Gx 将为 1024,NDRange 大小 Gy 将为 768。这假设有 1024x768 个工作项来处理该图像的每个像素。NDRange 大小则等于 1024x768。
    • 一个 3D 示例是在 3D 模型上进行一些计算。此外,还有 NDRange 大小 Gz。

问题2:再一次,这是正确的吗?

问题 3:这些尺寸只是为了方便,对吧?可以简单地将图像的每个像素的颜色值存储在大小为 的线性向量中width * height。对于任何 3D 问题也是如此。

各种各样的

问题 4:我们被告知内核的执行(换句话说:工作项)可以使用barrier(CLK_LOCAL_MEM_FENCE);Understood 在工作组内同步。我们还(一再)被告知工作组不能同步。好吧。但是那有什么用barrier(CLK_GLOBAL_MEM_FENCE);呢?

问题 5:在我们的宿主程序中,我们指定了一个上下文,该上下文由来自一个可用平台的一个或多个设备组成。但是,我们只能将内核排入所谓的命令队列中,该队列恰好链接到一个设备(必须在上下文中)。同样:命令队列没有链接到先前定义的上下文,而是链接到单个设备。正确的?

0 投票
3 回答
329 浏览

php - 修改 N 维数组 PHP

如何在 N 维数组中的每个元素之前添加一个额外的维度(递归)?假设我有

我想在房间、床和材料之前添加一个额外的“[0]”维度。(仅当最后一个元素是数组时才添加维度)。我还想区分,如果已经有额外的 [0] 维度,那么它不会出现两次.. + 如果数组键名为“@attribute”,我不想添加 [0]。

我想弄清楚,但我真的迷路了。这是我到目前为止所得到的..

但它不能递归地工作。任何帮助将不胜感激。谢谢!

0 投票
1 回答
3869 浏览

c++ - Implementing an N-dimensional Matrix in C++

我想在 C++ 中实现我自己的 N 维矩阵类。但是,我对如何实现它感到困惑,尤其是在实现运算符以访问该矩阵中的元素时。

有什么建议么?

0 投票
2 回答
291 浏览

arrays - 排序并保留 n 维数组的索引 - MATLAB

我有一个 12 维数组,并且在优化问题中使用每个维度作为索引值。

每个索引值i是一个从 1 到 5 的值。

我想A从最大到最小排序并跟踪索引,以便我知道哪些索引对应于A.

所以我的理想输出将是一个 2 列单元格/数组,其中一列是值,另一列是索引值。

对于一个简单的 3D 示例:假设我有一个 3D 数组: A(:,:,i1)

在哪里:

我希望我的输出是:

编辑:

假设我有 1x1x3x3 大小的输入,这样

A(1,1,1,1) = 3

A(1,1,2,1) = 1

A(1,1,3,1) = 23

A(1,1,1,2) = 12

A(1,1,2,2) = 9

A(1,1,3,2) = 8

A(1,1,1,3) = 33

A(1,1,2,3) = 14

A(1,1,3,3) = 6

预期的输出将是:

33 [1,1,1,3]

23 [1,1,3,1]

14 [1,1,2,3]

12 [1,1,1,2]

9 [1,1,2,2]

8 [1,1,3,2]

6 [1,1,3,3]

3 [1,1,1,1]

1 [1,1,2,1]

0 投票
1 回答
255 浏览

python - 如何准备、填充和探索 n 维 numpy 数组?

我已经模拟了一个具有 28 个参数的物理系统。模拟计算另一个大约 10 个输出参数的列表。现在我需要探索参数空间:一些输入参数我保持不变,一些有几个值。输入结构是这样的:

模拟程序的输出是这样的(对于输入的组合):

我想生成一个 n 维数组,以便以后可以以最大的灵活性对其进行探索。对于上面的例子,它应该是一个这样的数组:

其中第一个轴用于input1(一个值),第二个轴用于input2(四个值)等等,最后一个轴包含所有数据[input1, input2, input3, input4, input5, output1, output2, output3](5 + 3 = 8 个值)。对于此示例,它将是一个 4 x 10 x 8 = 320 值的数组,其形状如所述。

我的问题是:如何生成这个结构,然后填充它(在每个轴上迭代)而不for手动编写 28 个嵌套循环?

或者也许我的数据结构不正确并且存在更好的解决方案?

我对使用 pandas 的解决方案持开放态度(因为我希望能够将参数名称作为字符串处理)。或简单的python dicts。执行速度并不那么重要,因为瓶颈是每次模拟的计算时间(它需要达到稳定状态),我可以承受在模拟之间花费几毫秒的时间。

我还需要灵活地选择哪些参数是固定的,哪些是可变的(以及它们有多少值)。

0 投票
1 回答
1191 浏览

c++ - 迭代任意范围的n维数组的最快方法?

在 C++ 中,我希望迭代一个 n 维数组,其任意范围分别从 min[n] 到 max[n],在整个过程中分别保持 ord[n] 中的纵坐标。

IE。一个通用的解决方案:

形式:

我能想到的最快的 iterate() 算法是:

这会根据需要递增和重置每个纵坐标,避免调用堆栈或任何数学运算。

有更快的算法吗?

0 投票
2 回答
1195 浏览

arrays - 使用索引向量的函数访问 R 中的 n 维数组

我在 R 中的程序创建了一个 n 维数组。

在哪里dimensions = c(x,y,z, ... )

尺寸将取决于特定的输入。所以,我想创建一个通用代码,它将:

  1. 将特定元素存储在数组中
  2. 从数组中读取特定元素

通过阅读这个网站,我学会了如何做#2 - 从数组中读取一个元素

请帮我解决#1,即将元素存储到n维数组。


让我重新表述我的问题

假设我有一个 4 维数组。我可以存储一个值并从此数组中读取一个值:

如何使用索引向量的函数执行相同的操作:

谢谢

0 投票
1 回答
61 浏览

arrays - 访问 ND 数组的指定维度

我在 MATLAB 中有一个 3D 数组,其中

第三个维度是 120 个深度级别:0 - 5 - 10 ..,1400 和 720 是一个地理网格,每个深度级别都有值。我想以二维矩阵的形式获取由第三维中的索引(例如深度 = 5)指定的特定层。

挤压函数不访问第三维的特定数字,我的二维矩阵如下所示:

如何访问层,即:[1440 720] 矩阵的 5m?