multiply and addition rows of matrices

2 次查看(过去 30 天)
I got a matrix p = [ 1; 2 ; 3; 4] so in general dimension p(m) (=4) and a matrix w(m,n) (=4,2) witch is w= [ 2 4; 6 8; 1 3 ; 5 7] now i want to multiply each row of w(m,n) by the number of p(m). So multiplication row by row. So the result must be f=[ 2 4; 12 18; 3 9; 20 28]. i tried f=p*w but it gives not the right result.
Second all the rows of f must be add to eachother so f have only one row with elements the addition of all rows. In the example: f=[ 2+12+3+20 4+18+9+27] Thx in advance
  1 个评论
Sean de Wolski
Sean de Wolski 2011-5-9
Well asked question! You provided a small example, what you've tried, what you expect and dimensions - everything we typically ask for.

请先登录,再进行评论。

采纳的回答

Sean de Wolski
Sean de Wolski 2011-5-9
Basic Singleton eXpansion along the 2nd dimension:
f = sum(bsxfun(@times,p,w))
  2 个评论
Fiboehh
Fiboehh 2011-5-9
Okj thx man, hadn't found that function :)
You know a solution for the addition, because f = bsxfun(@plus,p,p) doesnt change the dimension.
Sean de Wolski
Sean de Wolski 2011-5-9
You just use the 'sum' function as I have above. It defaults to summing columns.

请先登录,再进行评论。

更多回答(1 个)

Bjorn Gustavsson
Bjorn Gustavsson 2011-5-9
Golf:
f = (w'*p)';
If you need the same function for complex numbers yuo might have to pay 2 extra characters:
f = (w.'*p).';

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by