[英]Matlab vector operation (vector + vector (by element))
我知道在Matlab中,您可以使用A*B
或A.*B
类的“漂亮”矢量运算
如果你有
A=[2, 2];
B=[3, 1];
这是逻辑,您不能使用A*B
您可以使用A.*B
是A[1]*B[1], A[2]*B[2]
,结果是[6, 2]
。
在写许多“脚本”时,我经常需要使用一些东西,结果是:
[6, 6;
2, 2]
所以基本上我需要使用forcycle(类似:):
C=zeros(2,2);
for i=1:size(A,1)
C(i,:)=A*B(i);
end
我想问一下,如何(如果可能的话)在没有forcycle的情况下重写它? 可能吗? 这2个元素的2个向量可能不利于理解我的需求。 再举一个例子:
A=[1,2,3,4,5]
B=[2,4]
结果:
[2,4,6,8,10;
4,8,12,16,20]
简而言之:
C(1:结束<====按一个元素进行::)= A * B(1:结束<=====进行一个元素)
->将整个向量A乘以B中的FIRST元素,然后将其保存在矩阵中具有A列和B行的FIRST行中。
->将整个向量A乘以B中的SECOND元素,然后将其保存在具有A列和B行的矩阵的SECOND行中。
->将整个向量A乘以B中的THIRD元素,然后将其保存在具有A列和B行的矩阵的THIRD行中。
-> ...
->将整个向量A乘以B中的LAST元素,然后将其保存在具有A列和B行的矩阵的LAST行中。
您可以为此目的使用bsxfun
P = bsxfun(@times,A,B')
这给
A = 1 2 3 4 5
B = 2 4
P = 2 4 6 8 10
4 8 12 16 20
另一种解决方案是使用矩阵乘法:
[ones(size(B))'*A].*[B'*ones(size(A))]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.