C++ 大矩阵的Opencv乘法

C++ 大矩阵的Opencv乘法,c++,opencv,matrix,C++,Opencv,Matrix,我有两个维度为1*280000的矩阵 我想使用opencv将一个矩阵与转置的第二个矩阵相乘 我尝试使用乘法运算符(*)将它们相乘 但这给了我一个错误:'总大小矩阵不适合大小类型' 相乘后,矩阵的大小为280000*28000 所以,我认为乘法应该是32位的 32位乘法有什么方法吗?为什么要这样乘法?但因为这是一个答案,我想帮助你们思考的不仅仅是做: 假设有两个矩阵:A和B(A.size()==B.size()==1x280000]) 和A*B.t()=AB(AB是结果) 然后AB=[A[0][

我有两个维度为1*280000的矩阵

我想使用opencv将一个矩阵与转置的第二个矩阵相乘

我尝试使用乘法运算符(*)将它们相乘

但这给了我一个错误:'总大小矩阵不适合大小类型'

相乘后,矩阵的大小为280000*28000

所以,我认为乘法应该是32位的


32位乘法有什么方法吗?

为什么要这样乘法?但因为这是一个答案,我想帮助你们思考的不仅仅是做:

  • 假设有两个矩阵:
    A
    B
    A.size()==B.size()==1x280000]
  • A*B.t()=AB
    (AB是结果)
  • 然后
    AB=[A[0][0]*B A[0][1]*B…A[0][27999]*B]
    (每列是转置矩阵乘以另一矩阵的相应元素)
AB
也可以写成:

(结果的每一行将是行矩阵乘以列(转置)矩阵的相应元素)


希望这将有助于你在做什么。。。使用for循环,您可以打印或存储结果所需的内容

,该矩阵将包含78400000000个元素。假设它有32位元素,则需要313,6 GB的RAM。这真的是你想要的吗?你有稀疏矩阵吗?如果你有一般矩阵,你可能需要某种“大矩阵线性代数”库(不确定是否存在)。但处理这些矩阵可能需要大量的处理时间。实际上,我正在研究稀疏表示分类器。在这种情况下,训练图像必须存储为向量,然后使用优化技术进行分类。所以,这就是向量大小如此之大的原因。
[ B[0][0]*A
  B[0][1]*A
  ...
  B[0][279999]*A]