问题标签 [dot-product]

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 投票
3 回答
810 浏览

matlab - 如何矢量化法线和点数组之间的点积总和

我需要评估以下表达式(以伪数学表示法):

∑<sub>ipi⋅<b>n

其中p是三元素向量的矩阵,n是三元素向量。我可以使用 for 循环执行此操作,如下所示,但我不知道如何对其进行矢量化:

0 投票
2 回答
134 浏览

r - R中的三角精度

所以我遇到了以下问题:

“在抛物线 y = x2/k 上,选择了三个点 A(a, a2/k)、B(b, b2/k) 和 C(c, c2/k)。

令 F(K, X) 为整数四元组 (k, a, b, c) 的个数,使得三角形 ABC 的至少一个角为 45 度,其中 1 ≤ k ≤ K 且 -X ≤ a < b < c ≤ X。

例如,F(1, 10) = 41 和 F(10, 100) = 12492。求 F(106, 109)。”

为了解决这个问题,我利用了点积的几何定义:theta = cos^-1((A dot B)/(|A|*|B|)),其中 A 和 B 是欧几里得向量,|A | 表示 A 的大小,theta 是它们之间的夹角。

我已经多次阅读我的脚本,据我所知,它导致 FoKX=22 而不是 FoKX=41 的唯一原因是三角精度或从弧度到度数的转换存在错误。让我知道是否是这种情况,或者我在某个地方犯了可能导致这种情况的错误。始终感谢您的帮助!

0 投票
1 回答
305 浏览

c# - Opencl 内核缓冲区在 12k 浮点元素后泄漏

我在 C++ 中为 opencl 编写了一个点积内核,它适用于向量长度 4096(也尝试了 12k 个元素并且工作完美)但是当我将向量长度增加到 16k 个元素时,结果变为无穷大,而它不应该超过一个小浮点数数字。显然有泄漏或类似的东西,但它适用于 n<16k 元素。16k 个元素和 4 个字节每个构成 64kB,三个缓冲区总和为 192kB,这甚至不是 gpu 内存的 1/1000。将结果与主机代码(C#)的相同缩减算法进行比较,主机结果如预期的那样小。也没有建立无穷大的精度误差(它甚至可能被限制在某个有限值)。

这是通过 DLL 调用从 C# 传递给 C++ 的内核(Ln= 本地工作大小,n= 全局工作大小):

以下是 C++ Opencl 缓冲区:

以下是缓冲区的发送方式:

执行:

这是结果缓冲区的获取方式(所有元素都是结果,我知道它未完成):

问题:在深入研究 C++ Opencl 之前,我是否必须进行配置?这在 Java/Aparapi/Jocl 中不是问题。

如果有帮助,请使用来自 Khronos 网站的 Opencl 1.2 头文件和 AMD Opencl.lib + Opencl.dll (目标设备是 HD7870)。

0 投票
4 回答
1364 浏览

java - 检查一个点是否在两个点之间

我刚刚意识到我的数学有点生疏了。我想检查一下Point C is between Point A and Point B。C可以在A和B的线段上,也可以不在。可能有三种情况,我必须确定所有情况:

  • C在A和B之间

    /li>
  • C在A和B前面

    /li>
  • C在A和B的后面

    /li>

最后两点的“草图”应该是一个三角形。

我使用点积来检查 C 是否在 A 和 B 之间。

要检查 C 是否在 A 和 B 的后面,我使用以下命令:

但是如何识别C是否在A和B前面呢?

0 投票
2 回答
33111 浏览

java - 带数组的点积

在课堂上,我们必须使用点积编写一个小代码来找到两个数组(数组 a 和数组 b)的和。我已经编写了我的代码,但是当我运行它时它并没有给我答案。我的教授说我的循环是错误的,但我认为不是。是否在 for 循环参数中表示i<a.length不允许的部分?因为即使我将它设置为 n 它仍然没有给我总和。

这是我的代码:

0 投票
2 回答
1399 浏览

c++ - 计算 3D 对象和点之间的角度

我在 DirectX11 中有一个 3D 对象,它有一个位置矢量和一个面向方向的旋转角度(它只围绕 Y 轴旋转)。

如果然后我想旋转对象以面对某物,那么我需要使用两个归一化向量上的点积来找到它所面对的方向和它需要面对的方向之间的角度。

我遇到的问题是我如何通过它的位置和角度找到对象当前面对的方向。我目前拥有的是:

有谁知道我如何从我拥有的值中获取它所面临的当前方向的向量,还是我需要重新编写它以便跟踪对象的方向向量?

编辑:将“cos”更改为“acos”。

解决方案(在 user2802841 的帮助下):

0 投票
1 回答
2102 浏览

numpy - 带有自定义点积的 Numpy 矩阵乘法

默认矩阵乘法计算为

我正在尝试使用自定义公式而不是点积来获得

在 numpy 中有没有一种有效的方法来做到这一点?

0 投票
2 回答
10195 浏览

c++ - 如何找到两条线的点积(Opencv)

我正在开发一个程序,该程序需要我找到两条线之间的角度。我找到了线的所有点坐标,引用到 0,0 点,但我不明白如何在 Opencv 中实现点积来找到角度。

我使用使用 opencv 库的可视化 C++。我还发现我可以使用 cv::Mat::dot 函数来获取点积,但我找不到任何好的例子。我无法理解此链接中的解释。

谁能给我一个很好的例子?所以我可以理解如何使用该函数来查找两行的点积。谢谢你。

0 投票
2 回答
3889 浏览

cuda - CUDA 通用点积

我是 C 和 CUDA 的新手,我正在编写点积函数,但它并没有给我正确的结果。有好心人帮我看看吗?

我也有两个问题,

  1. 为什么 dot() 不能正常工作,以及
  2. 在第 57 行,为什么是 product[threadIdx.x] 而不是 product[index]?我可以不写吗

    产品[索引] = a[索引] * b[索引]; ... if(index==0) {...} 并以这种方式将每个元素与第零个线程相加?

非常感谢。

设备查询:

生成文件:nvcc -arch=sm_20 cuda_test.cu -o cuda_test

在 cuda_test.cu 中:

0 投票
2 回答
6122 浏览

python - Python/Numpy - 矩阵乘以一个二维数组和另一个二维数组的每一行

做这个的最好方式是什么?

我知道这可以通过一个简单的 python 循环或使用 numpy 的 apply_along_axis 来完成,但我想知道是否有任何好的方法可以完全在 numpy 的底层 C 代码中完成这项工作。我查看了 tensordot 和其他一些功能,但没有任何运气。我还尝试了以下方法:

这实际上运行并给出了看起来大致正确的结果,除了结果数组不是 20x3。我可能能够找到一种方法将其重塑为我想要的数组,但我认为必须有一个更简单/更清洁/更清晰的内置方法,我错过了?