- 01 ones 用法
- 02 \ 左除 / 右除
- 03 ./ 与 / 的区别
- 04 .* 和 * 的区别
- 05 x.^2 与 x^2 的区别
- 06 .' 用法
- 总结(数组运算和矩阵运算)
01 ones 用法
ones()函数常用调用方式如下:
ones(N) - 生成N行N列且所有元素均为1的矩阵
ones(M,N) - 生成M行N列且所有元素均为1的矩阵
ones(M,N,P,...) - 生成M×N×P×...且所有元素均为1的矩阵
ones(SIZE(A)) - 生成一个维度与A一致且所有元素均为1的矩阵
02 \ 左除 / 右除
运算符 名称 说明
/(向右倒称为右除) 右除 AB=C A=C/B
\(向左倒称为左除) 左除 AB=C B=A\C
B\A 就是对应线性方程B*X=A 的解。
\ 左除
/ 右除
01).
A\B=inv(A)*B (A左除B=A的逆乘以B)
>> 3\5
ans =
1.6667 %3的逆=1/3,再乘以5.
同理:
A/B=A*(inv(B)) (A右除B等于A乘以B的逆)
>> 3/5 %5的逆=1/5,再3*(1/5)
ans =
0.6000
在传统的matlab 算法中 右除是先计算矩阵的逆再相乘(matlab 6以前),而左除则不需要计算逆矩阵直接进行相除。通常右除要快 一点,但左 除可避免被矩阵的奇异性带来的麻烦。
03 ./ 与 / 的区别
一、算法不同:./点除
如果a、b是矩阵,a./b就是a、b中对应的每个元素相除,得到一个新的矩阵;
如果a、b是两个数,那么a./b就是普通的除法。
二、公式不同:/ 除
如果a、b是矩阵, 比如aX=b,求出X。那么X=a\b(代表a的逆乘以b);或者Xa=b,X=b/a(代表b乘以a的逆)。
如果a、b是两个数,那么a/b就是普通的除法。
在对数值计算时,./ 和 / 其实是没有区别的
例:对于矩阵A=[a b c d],1./A=[1/a 1/b 1/c 1/d],而1/A表示的是A的逆。
04 .* 和 * 的区别
道理同上
1.在进行数值运算时“.*”和“*”是没有区别的,都是表示普通的乘法运算。例:m = 2,n = 3,m.*n = 6, m*n = 6。
2.在进行矩阵之间的运算时“.*”和“*”的意义就有所不同了。
假设a,b表示两个矩阵,a*b表示矩阵a与矩阵b进行矩阵相乘,a.*b表示矩阵a中的元素与矩阵b中的元素按位置依次相乘,得到的结果将作为新矩阵中相同位置的元素。
例:
x=1:1:10,y=2:2:20,c=x.*y则:c = 2 /8 / 18 / 32 /50 /72 / 98 /128 / 162 /200./
如果是:c=x*y,就会报错,因为:*是矩阵相乘,x是数组即是:1×10的矩阵,y是数组即是:1×10的矩阵,x*y显然不行,因为矩阵相乘,应为:m×n矩阵 乘以 n×r矩阵才行,n要一样。
05 x.^2 与 x^2 的区别
.^2是矩阵中的每个元素都求平方,^2是求矩阵的平方或两个相同的矩阵相乘,因此要求矩阵为方阵,
06 .' 用法
若a为一维数组,a(:)作用是把矩阵a转换为列向量,就是一列,
至于.'是一般转置的意思,
综合上面两个可知a(:).'是把矩阵a转换为一个行向量,就是一行。
补充:'是共轭转置的意思。当矩阵a是实矩阵时,他和.'作用是一样的,但当a是复矩阵时,二者是有区别的,
总结(数组运算和矩阵运算)
MATLAB 中用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不同的时侯,把点.置于符号前来指示这是一个数组运算(例如, .*)。下面给出的是一些常见的数组和矩阵运算。
-
数组加法:A+B,数组加法和矩阵加法相同。
-
数组减法:A-B ,数组减法和矩阵减法相同。
-
数组乘法:A.*B,A 和 B 的元素逐个对应相乘,两数组之间必须有相同的形,或其中一个是标量。
-
矩阵乘法:A*B,A 和 B 的矩阵乘法,A 的列数必须和 B 的行数相同。
-
数组右除法:A./B,A 和 B 的元素逐个对应相除:A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量。
-
数组左除法:A.\B,A 和 B 的元素逐个对应相除:B(i,j)/A(i,j)两数组之间必须有相同的形,或其中一个是标量。
-
矩阵右除法:A/B 矩阵除法,等价于 A*inv(B), inv(B)是 B 的逆阵。
-
矩阵左除法:A\B 矩阵除法,等价于 inv(B)*A, inv(A)是 A 的逆阵。
-
数组指数运算:A.^B,AB中的元素逐个进行如下运算:A(i,j)^B(i,j),A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量。
初学者往往混淆数组运算和矩阵运算。在一些情况下,两者相互替换会导致非法操作,MATLAB 将会报告产生了错误。在另一些情况下,两种运算都是合法的,那么这时 MATLAB进行错误的运算,并产生错误的结果。当我们进行方阵运算时,极易产生这样的错误。两个方阵具有相同的大小, 两者之间的数组运算和矩阵运算都是合法的, 但产生的结果完全不同。在这种情况下,你要万分的小心。