matlab中的cross,matlab里面的cross什么意思

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

qq1126498487

推荐于 2017.10.08

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:41%    等级:12

已帮助:12519人

第一个问题:

假设:

a = [1 2 3];

b = [4 5 6];

则你代码中的ab=[a;b];就得到

ab =

1 2 3

4 5 6

你代码中的最后一行dd就是a,b的cross,即:

cross(a,b) =

-3 6 -3

中间三行代码

dd(1)=det(ab(:,[2,3]));

dd(2)=-det(ab(:,[1,3]));

dd(3)=det(ab(:,[1,2]));

实际上就是求这个cross的过程,解释如下:

dd的第一个元素,是求ab中的第二列和第三列的行列式(det就是求行列式的意思,ab(:,[2,3])中“:”表示取所有行,[2,3]表示取第2和第3列),即2*6-5*3,结果是-3;

dd的第二个元素,是求ab中的第一列和第三列的行列式后再取负值,即-(1*6-4*3),结果是6;

dd的第三个元素,是求ab中的第一列和第二列的行列式,即1*5-2*4,结果是-3。

第二个问题:

在matlab中,符号“*”和符号“.*”是两种不同的乘法。

1、

C = A*B,C中的第一个元素C11是A的第一行与B的第一列对应相乘,并累加,这种乘法要求A的列数与B的行数相同;

C = A.*B,C中的第一个元素C11是A的第一个元素A11去乘以B的第一个元素B11,C12=A12*B12.......C21=A21*B21........

2、

点积是求两个向量对应元素相乘后的累加和,要求两个向量长度一致,matlab中对应的函数是dot(a,b)。

你的问题:

a,b是两个行向量(即1*3的,一行三列),b'就把b变成了一个3*1的列向量。

a*b':即1*3的行向量去乘以3*1的列向量,正好是3对元素对应相乘,然后累加;

如果你变成了a.*b':依据上面说点乘含义,matlab会去做a11*b11, a12*b12, a13*b13,但由于b'是一个列向量,b12和b13是不存在的,所以报错告诉你维度不对。

03分享举报

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值