如何在 Octave 中仅计算矩阵乘积的对角线?

发布于 2024-08-22 05:43:18 字数 267 浏览 11 评论 0原文

Octave 有没有办法只计算和存储矩阵乘积的对角线?

基本上就像这样做:vector = diag(A*B);

除了对角线上的值之外,我不关心A*B的任何值。矩阵大小约为 80k x 1212 x 80k,因此即使我不关心速度/额外内存,它也根本不适合 RAM。

奇怪的是,由于 Octave 是一个针对巨大数据集的包,并且对角线非常重要,所以它应该是可能的。

Is there a way in Octave to compute and store only the diagonal of a matrix product?

Basically like doing: vector = diag(A*B);

I don't care about any of the values of A*B except those on the diagonal. The matrix sizes are around 80k x 12 and 12 x 80k, so even if I didn't care about the speed/extra memory it simply wont fit in RAM.

Strange, since Octave is a package for huge data sets and diagonals are very important, so it should be possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

狼亦尘 2024-08-29 05:43:18

对角线中的第一个元素是 A 的第一行与 B 的第一列的标量积。对角线中的第二个元素是 A 的第二行与 B 的第二列的标量积。

换句话说:

vector = sum(A.*B',2);

The first element in the diagonal is the scalar product of the first row of A with the first column of B. The second element in the diagonal is the scalar product of the second row of A with the second column of B.

In other words:

vector = sum(A.*B',2);
甲如呢乙后呢 2024-08-29 05:43:18

您可以在 MATLAB 中执行此操作(可能类似于 Octave 语法):

vector = sum(A.*B',2);

这将仅将运算 A*B 的结果对角线计算为列向量 vector

This is how you could do it in MATLAB (probably similar to Octave syntax):

vector = sum(A.*B',2);

This will compute only the resulting diagonal of the operation A*B as a column vector vector.

无戏配角 2024-08-29 05:43:18

实际上我认为它是 A 的第一行与 B 的第一的点积...第二个对角线元素是第二行和第二列的点积...等等

actually I think it's the dot product of the first row of A with the first column of B... the second diagonal element is the dot product of the second row and the second column... etc

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文