不同阶的矩阵可以相乘吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不同阶的矩阵可以相乘吗相关的知识,希望对你有一定的参考价值。

不可以。因为矩阵相当于一张表,矩阵相加就是把对应位置上的项相加,故必须同阶才能相加。行列式相当于一个数值(当然也可以是含字母的整式),所以任意阶行列式可以相加。 参考技术A 前一个矩阵的列数和后一个矩阵的行数必须一样! 因为不同阶的矩阵不满足这个要求,所以不同阶的矩阵不能相乘。本回答被提问者和网友采纳 参考技术B 矩阵相乘的前提是前一个矩阵的列数跟后一个矩阵的行数是相等的。所以不同阶的矩阵不可以相乘喽

大矩阵的Opencv乘法

【中文标题】大矩阵的Opencv乘法【英文标题】:Opencv Multiplication of Large matrices 【发布时间】:2015-01-09 09:18:14 【问题描述】:

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

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

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

但它给了我错误:'总大小矩阵不适合 size_t 类型'

在乘法之后,矩阵的大小将是 280000*28000。

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

有什么方法可以做32位乘法吗?

【问题讨论】:

该矩阵将包含 78,400,000,000 个元素。假设它具有 32 位元素,则需要 313.6 GB 的 RAM。这真的是你想要的吗? 你有稀疏矩阵吗? 如果你有通用矩阵,你可能需要某种“大矩阵线性代数”库(不确定是否存在)。但是您可能需要大量的处理时间来处理此类矩阵。 实际上,我正在研究稀疏表示分类器。训练图像必须存储为向量,然后使用优化技术进行分类。所以,这就是向量大小如此之大的原因。跨度> 【参考方案1】:

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

假设您有两个矩阵:AB (A.size() == B.size() == [1x280000])。 和A * B.t() = AB(AB是结果) 然后AB = [A[0][0]*B A[0][1]*B ... A[0][279999]*B](每一列是转置矩阵乘以另一个矩阵的对应元素)

AB也可以写成:

[ B[0][0]*A
  B[0][1]*A
  ...
  B[0][279999]*A]

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

希望这对您正在做的事情有所帮助...使用 for 循环您可以打印、存储或您需要的结果

【讨论】:

以上是关于不同阶的矩阵可以相乘吗的主要内容,如果未能解决你的问题,请参考以下文章

一阶矩阵乘以四阶矩阵怎么做

一阶方阵

两行三列的矩阵和三行三列的矩阵相乘

vs2010编译运行矩阵相乘不显示结果?

OPENGL矩阵顺序与调用顺序相反

31-矩阵相乘