24小时热门版块排行榜    

查看: 774  |  回复: 10

阿乐斗士

木虫 (著名写手)

[求助] Matlab中矩阵的运算 已有2人参与

有两个矩阵A=[a11  a12  a13;  a21  a22  a23;  a31  a32  a33]     B=[b11  b12  b13;  b21  b22  b23;  b31  b32  b33] ;   阵列里面的每个元素都是一个三维向量,即a11=(x1,y1,z1);

想进行以下运算,得到另一个矩阵:[ (a11xb11)/|a11||b11|        (a12xb12)/|a12||b12|.................. (a33xb33)/|a33||b33|   ]     
急.......,求Matlab具体程序?



回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

且行且珍惜
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

水晶杯喝茶

新虫 (正式写手)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
阿乐斗士: 金币+3, 有帮助 2014-11-22 11:18:10
clc,clear;
A=[a11  a12  a13;  a21  a22  a23;  a31  a32  a33] ;  
B=[b11  b12  b13;  b21  b22  b23;  b31  b32  b33] ;
C=A.*B./(abs(A).*abs(B));
2楼2014-11-20 14:11:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhushuwei32

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
阿乐斗士: 金币+7, ★★★很有帮助 2014-11-22 11:18:40
[m n]=size(A);
C=[];
for i=1:m
D=A(i,.*B(i,/(norm(A(i,)*norm(B(i,));
C=[C D];
end
3楼2014-11-20 14:18:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhushuwei32

木虫 (小有名气)

把所有笑脸换成冒号再加一个右括号: )    ,变成快捷字符了。二楼你确定你自己运行过吗?人家需要变成一维行向量的呀
4楼2014-11-20 14:26:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

水晶杯喝茶

新虫 (正式写手)

【答案】应助回帖

引用回帖:
4楼: Originally posted by zhushuwei32 at 2014-11-20 14:26:57
把所有笑脸换成冒号再加一个右括号: )    ,变成快捷字符了。二楼你确定你自己运行过吗?人家需要变成一维行向量的呀

这还不简单
加一句D=C(;
就变成一维的了
5楼2014-11-20 15:08:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhushuwei32

木虫 (小有名气)

引用回帖:
5楼: Originally posted by 水晶杯喝茶 at 2014-11-20 15:08:00
这还不简单
加一句D=C(;
就变成一维的了...

你这个abs(A).*abs(B)算下来不和A.*B一样了嘛!结果成了一个全1矩阵了。人家分母是两个一维向量的模相乘,这类似于求两个向量夹角的余弦
6楼2014-11-20 15:52:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhushuwei32

木虫 (小有名气)

引用回帖:
6楼: Originally posted by zhushuwei32 at 2014-11-20 15:52:45
你这个abs(A).*abs(B)算下来不和A.*B一样了嘛!结果成了一个全1矩阵了。人家分母是两个一维向量的模相乘,这类似于求两个向量夹角的余弦...

说错了,如果都是正数就一样了,负数就不一样了,但你的方法确实是错了,没理解他得意思
7楼2014-11-20 15:54:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

阿乐斗士

木虫 (著名写手)

引用回帖:
2楼: Originally posted by 水晶杯喝茶 at 2014-11-20 14:11:48
clc,clear;
A= ;  
B= ;
C=A.*B./(abs(A).*abs(B));

谢谢回帖!
我是要得到C是一个三行三列矩阵,每个元素cij=(aijxbij)/|aij||bij| ,用A.*B.不能得到这样的效果吧?
且行且珍惜
8楼2014-11-22 09:06:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

阿乐斗士

木虫 (著名写手)

引用回帖:
3楼: Originally posted by zhushuwei32 at 2014-11-20 14:18:15
=size(A);
C=[];
for i=1:m
D=A(i,.*B(i,/(norm(A(i,)*norm(B(i,));
C=;
end

谢谢回帖!
是我没有表达清楚,要得到C是一个三行三列矩阵,每个元素cij=(aijxbij)/|aij||bij|
是不是不用要C这步C=[];和C=[C D];了
另外将for i=1:m
D=A(i,.*B(i,/(norm(A(i,)*norm(B(i,));
改为
for i=1:m
  for j=1:n
   D[i ,j]=A[i,j]点乘B[i,j]/(norm(A[i,j])*norm(B[i,j]))
end
这样可以吗?
且行且珍惜
9楼2014-11-22 09:16:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

阿乐斗士

木虫 (著名写手)

引用回帖:
6楼: Originally posted by zhushuwei32 at 2014-11-20 15:52:45
你这个abs(A).*abs(B)算下来不和A.*B一样了嘛!结果成了一个全1矩阵了。人家分母是两个一维向量的模相乘,这类似于求两个向量夹角的余弦...

aij, bij都是三维向量,所以你说的没错我要得到的cij=(aijxbij)/|aij||bij|就是求余弦的
且行且珍惜
10楼2014-11-22 09:22:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 阿乐斗士 的主题更新
信息提示
请填处理意见