问题标签 [matrix-multiplication]

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 投票
1 回答
1995 浏览

javascript - 使用 CSS 3D 转换从 DOM 对象接收转换后的鼠标事件数据

当前,javascript 鼠标事件中是否有任何数据可以让我轻松找到或计算相对于转换元素的 3D 空间的鼠标位置?

为了直观地说明,
左边是没有3d矩阵的div,右边是3d变换后的div。
o是鼠标事件的起源

在下面的脚本中,单击 div 中的相同像素将报告event.layerX文档/屏幕的 2d 转换空间中的一个。

我知道,但对解析 div 的 matrix3d 并使用它乘以事件位置来发现这一点的前景并不激动,但是在实际实现中,div 将有更复杂的转换,这需要在不止一个对象的每一帧,我担心会带来的开销......如果这是我唯一的选择,我当然不会介意帮助。

0 投票
3 回答
1119 浏览

python - numpy tensordot 相关问题

我在numpy中乘以矩阵有一个特定的问题。这是一个例子:

我想将每一行乘以其转置,以便为每一行获得一个 3x3 矩阵,例如第一行:

并将结果存储在 3-d 矩阵 M 中:

我认为可能有一种方法可以在不循环的情况下做到这一点,也许使用张量点,但找不到它。

有人有想法吗?

0 投票
2 回答
4059 浏览

python - 使用 Cython 优化 NumPy

我目前正在尝试优化我用纯 Python 编写的代码。当我使用 NumPy 数组时,此代码非常频繁地使用NumPy 。下面你可以看到我转换为Cython的最简单的类。它只做两个 Numpy 数组的乘法。这里:

我的问题是,如果以及如何优化它,当我查看“cython -a”生成的 C 代码时,有很多 NumPy 调用,这看起来效率不高。

我的想法是使用两个for循环并遍历数组的条目。也许我可以使用编译器通过 SIMD 操作来优化它?!我试过了,我可以编译它,但它给出了奇怪的结果并且花了很长时间。下面是替换函数的代码:

然而,正如我所说,这段代码真的很慢,并且不能按预期运行。那么我做错了什么?优化这一点并删除 NumPy 调用操作的最佳方法是什么?

0 投票
1 回答
2069 浏览

matlab - linsolve 中的错误

这给出了:

请帮助解决这个问题。

还有其他方法可以求解形式为 say 的方程Eq1= A*2.1 + B*3.5 +C*1.5吗?

0 投票
3 回答
1139 浏览

performance - CUDA 理论带宽与有效带宽

我有一个 CUDA 内核,它将两个矩阵相乘,其中 Width 和 Height 是我正在使用的块大小的倍数。

我使用的 Nvidia Quadro Fx 3800 的理论带宽为 50 Gb/s,我得到了一些奇怪的结果(有效带宽大于理论带宽)

我将在这里发布一些结果:

使用块大小 2

[10][10] * [10][10] -> BW=0,02 Gb/s [1000][1000]*[1000][1000] -> BW=69,4 Gb/s

块大小为 64

[1000][1000] * [1000][1000] -> BW=486,4 Gb/s [10000][10000] * [10000][10000] -> BW= 45072,12 Gb/s

我从英伟达最佳实践指南中获取了有效带宽公式(我已经简化了它,但它是等效的(除非有一个愚蠢的错误))。我认为内核很好,因为它与我读过的一些 Nvidia Lectures 非常相似(如果不相等),也因为它工作正常(afaik)。

提前致谢

0 投票
2 回答
5110 浏览

cuda - CUDA 中的非方阵乘法

我在 CUDA 中用于矩阵乘法的代码让我可以将方阵和非方阵相乘,但是,宽度和高度都必须是块大小的倍数。

因此,例如,我可以乘以 [3][6] * [6][3](使用 blocksize=3),但不能乘以 [3][2]*[2][3]。

有谁知道这样做的方法?这是我的内核:

提前致谢!

0 投票
1 回答
807 浏览

matlab - 如何在 Matlab 中加速/避免大型矩阵的乘法?

设置在这里。

X:6000x8000 非稀疏矩阵

B:8000x1 稀疏向量,只有几十个非零

d:正数

M:被稀疏化X'X,即将量级小于d的元素阈值化为0。只剩下数百个元素。所以 (X' * X - M) 有很多小元素并且不是稀疏的。

我想计算向量 y=(X' * X - M)* B 并且可以重写为 y=X' * (X * B) - M*B。第一部分足够快,但第二部分涉及X'*X,并且非常非常慢。

任何人都可以帮助我加速这个计算吗?

太感谢了!

0 投票
2 回答
592 浏览

opengl - 人类的opengl旋转

我目前可以通过首先平移到枢轴点然后执行旋转并最后平移回原点来围绕枢轴点旋转。在我的例子中,对于肩膀,我很容易做到这一点。但是,我不知道如何还为前臂添加围绕肘部的旋转。

我尝试了以下方法来围绕肘部旋转前臂:

  1. 平移到肩部,旋转,平移到原点,平移到前臂,旋转,平移到原点
  2. 平移到肩部,旋转,平移到前臂,旋转,平移到肩部,平移到原点

都不适合我。有什么建议么?我真的坚持这个。

0 投票
1 回答
2179 浏览

c++ - 任何输入的 strassen 算法

我们如何更改Strassen 算法,使其适用于任何大小的矩阵(例如 n=5)?

0 投票
1 回答
9227 浏览

cuda - CUBLAS 矩阵乘法

在使用 CUDA 实现矩阵乘法之后。我试图用 CUBLAS 来实现它(感谢论坛中一些人的建议)。

我可以将方阵相乘,但是(再次是的......)我在使用非方阵时遇到了困难。唯一有效的非方阵乘法是当您改变矩阵 A 的宽度(A*B=C)时。

我没有收到任何错误,但结果矩阵返回错误值。这是我的代码(它基本上是对 simpleCUBLAS SDK 示例的改编):

有什么想法吗?另外,有没有人在 CUBLAS 中有一个矩阵乘法实现正在工作,所以我可以比较一下吗?提前致谢。