How to perform an array multiplication for a vector and a matrix and output results as a matrix?

조회 수: 1 (최근 30일)
Here is the problems and solution which seems very bad. Could anyone suggest a better solution?
M = [1 2 3];
C = [10 11 12; 13 14 15; 16 17 18; 19 20 21; 22 23 24];
K1=C(1,:).*M
K2=C(2,:).*M
K3=C(3,:).*M
K4=C(4,:).*M
K5=C(5,:).*M
B = vertcat(K1,K2,K3,K4,K5)

채택된 답변

the cyclist
the cyclist 2013년 7월 5일
편집: the cyclist 2013년 7월 5일
You might want this instead:
B = bsxfun(@times,C,M)

추가 답변 (2개)

the cyclist
the cyclist 2013년 7월 5일
편집: the cyclist 2013년 7월 5일
Matrix multiplication is a core MATLAB function. I think you just want
B = C * M'
Notice that that is just a "*", not a ".*" (which is element-by-element) multiplication, and that I had to transpose M.
  댓글 수: 3
the cyclist
the cyclist 2013년 7월 5일
편집: the cyclist 2013년 7월 5일
I forgot the transpose when I first posted. Also, I just looked at your B matrix, and it seems you do not want simply matrix multiplication after all.
You expect the result to be a 5x3 and not a 5x1, right?
Alex Khazaradze
Alex Khazaradze 2013년 7월 5일
Thanks, for help, but if B=C * M' I get the answer: B =
68
86
104
122
140
While I would like to have following: B =
10 22 36
13 28 45
16 34 54
19 40 63
22 46 72

댓글을 달려면 로그인하십시오.


freebil
freebil 2013년 7월 5일
편집: freebil 2013년 7월 5일
I think this works:
M = [1 2 3];
C = [10 11 12; 13 14 15; 16 17 18; 19 20 21; 22 23 24];
for i=1:length(C)
result(i,:)=M.*C(i,:);
end

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by