matlab矩阵点乘点除,matlab中关于内积(点积)的一些区别与介绍

  • Post author:
  • Post category:其他


在用matlab进行数值模拟时,遇到内积问题,贴上来一块分享一下!

1.内积定义

两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的内积定义为:

a·b=a1b1+a2b2+……+anbn。

如果是矩阵的话定义为​(这里主要是为了区分复数的矩阵,后面会介绍)

a4c26d1e5885305701be709a3d33442f.png

​在matlab中,关于内积有比较简便的运算,比如dot函数,但是dot函数是针对实数进行计算的,如果有复数用起来还行不行呢。我们举例说明一下:

2、dot函数实数内积的运算

关于dot函数matlab中是这样说的:‘dot  Vector dot

product.’也就是说它是一个对向量进行操作的语句,比如取:

a=[1 2 3];b=[3 4 5];

那么dot(a,b)=​​26

如果取​c=[1 2 3;4 5 6;7 8

9];  d=c’;

那么dot(a,b)=[30

81   150]

如果要计算矩阵c和d的内积,就不得不sum(dot(a,b))

或者,另一种方法就是用点积 的方式求解,具体来说就是:

3、复数内积

通过上面讨论不难看出,用dot函数计算实数还可以,计算复数行不行呢?举例如下:

​a2=fft(c)

a4c26d1e5885305701be709a3d33442f.png
写图片摘要(选填)

如果计算,用常规的方法就需要sum(dot(a2,a2)),求出的结果为:855

那么按照定义再求一次,a3=conj(a2);

(这一步是求出其共轭)

sum(sum(a2.*a3))=855;​

这说明这种方法对实数复数都ok的。都可以求解!!!!​