我使用 将两个矩阵乘以一个向量loop
。不使用就可以做到这一点loop
吗?
类似的东西D1=C.*(A.*B)
不起作用。
下面的代码示例
clear;
clc;
A=rand(5,5);
B=rand(5,5);
C=[0.1 0.3];
for ii=1:2
D(:,:,ii)=A.*B.*C(ii);
end
这是怎么做的:
D=bsxfun(@times,A.*B,permute(C,[3 1 2]))
说明:诀窍是使用 将C
行向量(例如 x 方向)更改为第 3 维(或 z 方向)permute
,这就像您对 C 的定义不同:
C(:,:,1)=0.1;
C(:,:,2)=0.3;
现在,bsxfun
是执行您编写的 for 循环的一种紧凑方式。就是这样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句