c++ - 我应该如何在 C++ 中将两个矩阵相乘?

标签 c++ vector

注意:我正在使用 C++ 标准库,并将矩阵存储为多维 vector (请参见下面的示例)。

我无法找到在 C++ 中将两个矩阵相乘的合适函数。阐明我要做什么:

A = | a1 a2 |  B = | b1 |
    | a3 a4 |      | b2 |

Result = | (a1 * b1 + a2 * b2) |
         | (a3 * b1 + a4 * b2) |

显然我可以使用一个简单的算法来做到这一点,但我正在尝试寻找是否有一个函数可以做到这一点。

我在 C++ 中的具体示例:

#include <vector>

std::vector<std::vector<double>> A;
A.push_back({ 0.96, 0.56 });
A.push_back({ 0.01, 0.41 });

std::vector<std::vector<double>> B;
B.push_back({ 1.331749 });
B.push_back({ 1.0440705 });

Result = (A * B);

结果”将是:

| 1.8631586 |
| 0.4413864 |

我应该如何进行上述操作?

最佳答案

不,C++ 库中没有用于 vector 乘法的函数。有一些构建 block ,如 std::for_eachstd::copystd::transform,可用于实现它们,但这取决于您自己实现完整的算法。

在 Intertubes 上的某个地方,可能有一些库在四处 float ,它们实现了这些算法。您可以使用 Google 试试运气。

关于c++ - 我应该如何在 C++ 中将两个矩阵相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37504028/

相关文章:

c++ - PluginController 的概念和设计

android - 在 JNI 级别声明的全局变量(非静态)能存活多久?

c++ - 最好保留 vec4 而不是 vec3 以避免总是转换?

c++ - 被复制到 vector 中的对象被清除,因为原始预复制已被清除()

C++、vsprintf 处理不断变化的参数数量和大格式字符串

c++ - MFC 如何将 CStatic 调整为小尺寸

java - Vector<Customer> C++、List<Customer> 和 Vector<Customer> Java

java - 根据 3 个哈希表包含的共同值将 3 个哈希表合并为 1 个哈希表

c++ - 如何让 vector 数据指向数组

c++ - 当我使用 std::map 从文件中读取值时,该值采用 ",",因为键和值以逗号分隔