例如
.* 点乘
.^ 点乘幂
.\ 点左除
./ 点右除
解释:点运算是对相同维数的矩阵的对应元素进行相应的运算。
矩阵的点积,就是加点的情况
就是矩阵各个对应元素相乘, 这个时候要求两个矩阵必须同样大小
矩阵的乘法,就是不加点的情况 就是矩阵a的第一行乘以矩阵b的第一列,各个元素对应相乘然后求和作为第一元素的值。 矩阵只有当左边矩阵的列数等于右边矩阵的行数时,它们才可以相乘,乘积矩阵的行数等于左边矩阵的行数,乘积矩阵的列数等于右边矩阵的列数
在里最核心的内容就是数组和数组运算,在MATLAB里矩阵和数组的差别不大,矩阵作为一种变换或映射算子的体现,在数学上有着严格的运算规则。数组不仅承担matlab软件赋给它的一些运算规则,而且也实现矩阵运算的功能。1 。 当你需要进行一般的(就像教科书讲的)矩阵(向量)运算时就直接用 *(^)。 2 。 当你需要把两(矩阵)向量 的对应位置相乘(求幂) 那就用 .*(.^)。
A*B(为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵A的列数等于矩阵B的行数) A.*B(符号数组的乘法,为按参量A与B对应的分量进行相乘。A与B必须为同型阵列,或至少有一个为标量) 例1 A=[1 2 3;4 5 6;7 8 9];B=A;A*B ans = 30 36 42
66 81 96
102 126 150
>> B/A
ans =
1 0 0
0 1 0
0 0 1 %矩阵这样做是不行的!!!
>> A.*B ans = 1 4 9
16 25 36
49 64 81
>> B./A ans = 1 1 1
1 1 1
1 1 1
例2
>> a=[1 2 3];b=[4 5 6];c=[7 8 9];
>> a*b
??? Error using ==> mtimesInner matrix dimensions must agree.%这个是不行的!!
因为矩阵a 的行数和矩阵 b的列数并不相同,所以不能用 a*b
>> a.*b ans = 4 10 18 (对应位置元素相乘)
>> a.*c ans = 7 16 27
>> a/b ans = 0.41558 (这个涉及到多项式求解了。。。)
>> a/c ans = 0.25773 %实际上是一个拟合的结果:a=kb,a=kc,k的一个拟合值。
>> a./b ans = 0.25 0.4 0.5>> a./c ans = 0.14286 0.25 0.33333
所以,点乘或者点除都是一对一的乘或者除!!
Attention 特别注意:对于Ax=b的问题,如果A,b已知,那么,x=A\b(x等于A左除b)
>> A=[1 2;3 4;5 6];B=[3; 7; 11];>> x=A\B x = 1 1>> A*x ans = 3 7 11
必须牢记一点:matlab的输入变量是矩阵,参与运算的矩阵维数必须对应!