yingtao14 发表于 2007-11-13 22:55

不同矩阵不同维度元素之间运算

问题:有两个矩阵a和b,他们都是N*N*N的三维方阵,现在想让a第二维和b第三维元素分别相加得到一个一维的矩阵,
即a(1,1:N,1)+b(1,1,1:N),请问该如何实现?
如果直接a(1,1:N,1)+b(1,1,1:N),系统提示 Number of array dimensions must match for binary array op.
即两个矩阵不匹配。
我知道有几种实现的方法,但是都比较麻烦,想请教一下有没有更简单的办法?
1.用循环分别计算;

2.引入两个一维的中间变量,
tpa(1:N)=a(1,1:N,1);
tpb(1:N)=b(1,1,1:N);
tpa(1:N)+tpa(1:N);

3.用permute交换维度,但同样需要引入中间变量)
Thank you!!

[ 本帖最后由 eight 于 2007-11-15 11:26 编辑 ]

donkeyxu 发表于 2007-11-14 14:55

%你的第二种方法依然不行,实质和a(1,1:N,1)+b(1,1,1:N)一样
reshape(a(1,:,1),1,[])+reshape(b(1,1,:),1,[])%即可

eight 发表于 2007-11-15 11:27

help squeeze,应该可以,试试吧

yingtao14 发表于 2007-11-15 17:24

谢谢donkeyxu 和eight的回答。
我试了一下,donkeyxu的方法可以得到我想要的结果,不过,我的第2种方法好像也可以得到结果。
根据eight 的提示 我试了下squeeze(a(1,:,1))+(squeeze(b(1,1,:)))',也可以得到我想要的结果

[ 本帖最后由 eight 于 2007-11-15 17:36 编辑 ]
页: [1]
查看完整版本: 不同矩阵不同维度元素之间运算