matlab常用函数 ones,\ / ,数组运算和矩阵运算

  • 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 中用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不同的时侯,把点.置于符号前来指示这是一个数组运算(例如, .*)。下面给出的是一些常见的数组和矩阵运算。

  1. 数组加法:A+B,数组加法和矩阵加法相同。

  2. 数组减法:A-­B ,数组减法和矩阵减法相同。

  3. 数组乘法:A.*B,A 和 B 的元素逐个对应相乘,两数组之间必须有相同的形,或其中一个是标量。

  4. 矩阵乘法:A*B,A 和 B 的矩阵乘法,A 的列数必须和 B 的行数相同。

  5. 数组右除法:A./B,A 和 B 的元素逐个对应相除:A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量。

  6. 数组左除法:A.\B,A 和 B 的元素逐个对应相除:B(i,j)/A(i,j)两数组之间必须有相同的形,或其中一个是标量。

  7. 矩阵右除法:A/B 矩阵除法,等价于 A*inv(B), inv(B)是 B 的逆阵。

  8. 矩阵左除法:A\B 矩阵除法,等价于 inv(B)*A, inv(A)是 A 的逆阵。

  9. 数组指数运算:A.^B,AB中的元素逐个进行如下运算:A(i,j)^B(i,j),A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量。

初学者往往混淆数组运算和矩阵运算。在一些情况下,两者相互替换会导致非法操作,MATLAB 将会报告产生了错误。在另一些情况下,两种运算都是合法的,那么这时 MATLAB进行错误的运算,并产生错误的结果。当我们进行方阵运算时,极易产生这样的错误。两个方阵具有相同的大小, 两者之间的数组运算和矩阵运算都是合法的, 但产生的结果完全不同。在这种情况下,你要万分的小心。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值