Matlab 矩阵乘法以及矩阵点乘的规则区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab 矩阵乘法以及矩阵点乘的规则区别相关的知识,希望对你有一定的参考价值。

说详细点谢谢~~~~
矩阵乘法举个例子吧
A=[1 2 3;4 5 6;7 8 9],B=[1 2 3;4 5 6;7 8 9]。计算A×B。

矩阵乘法的要求是参与相乘的左矩阵的列数必须跟右矩阵的行数相同,即A (M x N) 乘以 B (N x K) 的乘积矩阵C 为 M x K 维的。

矩阵乘法结果矩阵的每个元素都是向量的内积,cij = ,即A的第i行向量和B的第j列向量的内积。

矩阵点乘则要求参与运算的矩阵必须是相同维数的,是每个对应元素的逐个相乘。

例子如下:

A = [1 3;2 4]

 A = 

     1     3

     2     4

 B = [3 0;1 5]

 B =

     3     0

     1     5

 A*B

 ans =

     6    15

    10    20

 A.*B

ans =

     3     0

     2    20

扩展资料

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多。

并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

优势特点

1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

2) 具有完备的图形处理功能,实现计算结果和编程的可视化;

3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

参考资料来源:百度百科—MATLAB

参考技术A 矩阵乘法的要求是参与相乘的左矩阵的列数必须跟右矩阵的行数相同,即
A (M x N) 乘以 B (N x K) 的乘积矩阵C 为 M x K 维的。矩阵乘法结果矩阵的每个元素都是向量的内积,cij = <ai, bj>, 即A的第i行向量和B的第j列向量的内积。

矩阵点乘则要求参与运算的矩阵必须是相同维数的,是每个对应元素的逐个相乘。本回答被提问者采纳
参考技术B 计算步骤:
前面的(1 2 3)*(123;456;789)
(123)*(123)=1*1+2*2+3*3=14
(123)*(456)=1*4+2*5+3*6=32
(123)*(789)=1*7+2*8+3*9=48
同理,一共3*3=9个数,最后把所有得数相加就是A*B的结果了

矩阵与点乘与叉乘在Unity中的区别

今天豁然开朗来记录一下我理解的矩阵以及四元数和点乘与叉乘的理解。

 

首先说矩阵以及四元数

 

矩阵的乘法是根据n*m列来获取的,n的行数是代表结果的行数,m的列数代表结果的列数。

红色与黑色表示第一个矩阵中的4个数,紫色和灰色表示第二个矩阵的4个数,矩阵的乘法是第一个矩阵的n行与第二个矩阵的m列想乘并把乘机相加的到结果矩阵 第(n,m)位置的结果。

而四元数表示一个[x,y,z,1] * 4*4的矩阵。每组的矩阵正好只有一个有值。[1 ,0,0,0] [0,1,0,0][0,0,1,0][Tx,Ty,Tz,1].其实我们可以看作不同维度的4条线。其实矩阵就是方程式的变换表达方式。具体理解参见http://www.ruanyifeng.com/blog/2015/09/matrix-multiplication.html

当我们从4维空间的向量表示一个旋转的角度就不会出现欧拉旋转那样的万象限死锁。原因是,一个一维度的四元素与一个4*4的矩阵相乘的话,我们就能够获得一个新的一维度的四元数。

这就是为什么要加一个维度来解决三维旋转死锁的原因。如果有四维空间的话,我们如果要解决四维空间死锁的问题我觉得也需要再加一个维度来解决。

从矩阵的乘法,我们来讲点乘与叉乘,点乘很简单就是两个向量的每个元素的乘法,符合我们平常的理解。就是x*x+y*y+z*z通过也可以是a·b=|a|·|b|cos<a,b>这种表示。通过点乘得到的结果是标量不能代表方向。

而叉乘,如维基百科https://en.wikipedia.org/wiki/Cross_product每个维度的坐标都先与xyz的单位向量相乘后在做运算,所以得到的结果可以描述一个向量。(具体自己也没看太明白)

而在Unity中通过点乘描述旋转角度,而叉乘描述的是方位,这里方位的理解是,因为点乘是有方向的,如果点乘得到的结果是一个面积,而这个面正好是我们原始朝向转向点需要转向的方向,这里不再需要通过角度来做正向与反向的判断(如果用点乘的角度来计算转的方向的话当然会出现我们是正向转还是逆向转的问题。)而叉乘得到的结果是个一个面积,也就是说转向扫过的面,只会有一个朝向,逆向朝向的话面积与算出来的面积不对称。这样我们省略掉了一个点乘得到角度向左还是向右转的步骤。

Thinkings and Tips: 

1.还有个猜想x,y,z的值表示一个空间点。当我们在通过另一个维度w。来计算空间点的时候,是否不会影响x,y,z空间点的位置呢。也就是四元素的数学原理到底是怎么样子的呢。

2.矩阵的表达方式并不能用加减乘除的普通四维来理解,因为矩阵是线与面的表达计算方式,而我们普通的运算只是点而已。矩阵的出现是为方程式的表达简化而出现的。也就是线性映射。

 

以上是关于Matlab 矩阵乘法以及矩阵点乘的规则区别的主要内容,如果未能解决你的问题,请参考以下文章

numpy 和 tensorflow 中的各种乘法(点乘和矩阵乘)

matlab图像的矩阵点乘后,所得的值溢出问题,该怎么解决?

向量点乘叉乘、矩阵、OpenGL变化

矩阵与点乘与叉乘在Unity中的区别

乘法“*”和点乘“.*”&除法“/”和点除“./”区别

matlab入门——矩阵运算