how to multiply one array of vector in another ?

1 次查看(过去 30 天)
There are two same size vectors,A and B (1*2000 in size).
for each value of A must be used in equation below for all B values:
equation=A+A^2+B
for example:
A=[1 2 3]
B=[10 20 30]
I want following results:
1+1^2+10 , 1+1^2+20, 1+1^2+30
2+2^2+10 , 2+2^2+20, 2+2^2+30
3+3^2+10 , 3+3^2+20, 3+3^2+30
But, A and B both are 2000 in size, I expect to get 2000*2000 matrix for eqn.
can you please advise?
Thnks

采纳的回答

Walter Roberson
Walter Roberson 2016-2-10
bsxfun(@(a,b) a + a.^2 + b, A(:), B)
  2 个评论
Amin Gan
Amin Gan 2016-2-10
Thanks for your reply. If I had a more complex equation such as:
eqn=A+sqrt(A^2-B), can I use bsxfun ?
Walter Roberson
Walter Roberson 2016-2-10
Yes. Just be sure to use .^ instead of ^ . Also be sure that your B is a row vector
bsxfun(@(a,b) a + sqrt(a.^2 - b), A(:), B)
If B is not a row vector then
bsxfun(@(a,b) a + sqrt(a.^2 - b), A(:), B(:).')

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Multidimensional Arrays 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by