繁体   English   中英

Matlab向量运算(向量+向量(按元素))

[英]Matlab vector operation (vector + vector (by element))

我知道在Matlab中,您可以使用A*BA.*B类的“漂亮”矢量运算

如果你有

A=[2, 2];
B=[3, 1];

这是逻辑,您不能使用A*B 您可以使用A.*BA[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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM