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