在用matlab进行数值模拟时,遇到内积问题,贴上来一块分享一下!
1.内积定义
两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的内积定义为:
a·b=a1b1+a2b2+……+anbn。
如果是矩阵的话定义为(这里主要是为了区分复数的矩阵,后面会介绍)
在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)
写图片摘要(选填)
如果计算,用常规的方法就需要sum(dot(a2,a2)),求出的结果为:855
那么按照定义再求一次,a3=conj(a2);
(这一步是求出其共轭)
sum(sum(a2.*a3))=855;
这说明这种方法对实数复数都ok的。都可以求解!!!!