Given two real square matrix of order n. Get a new matrix of the elements of each column of the first matrix times elements of the corresponding rows of the second matrix. i coded using matlab but unfortunately it applys only for (3x3)matrix.what should i do so that it may apply for every kind of matrix, for example(4x4),(5x5) and more.
codes
clc
clear
a=[1 2 3;4 5 6;7 8 9];
b=[1 2 3;4 5 6;7 8 9];
for i=1:length(a)
for j=1:length(b)
c(i,j)=a(i,j)*b(j,i)
end
end
disp(a);
disp(b);
disp(c);

댓글 수: 1

Torsten
Torsten 2016년 5월 23일
편집: Torsten 2016년 5월 23일
From what you wrote I can't deduce how you want to get the new matrix from the two given matrices.
Your code from above just calculates C as
C=A.*B.'
I guess this is not what you have in mind.
Best wishes
Torsten.

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

 채택된 답변

John D'Errico
John D'Errico 2016년 5월 23일

0 개 추천

I'll suggest your mistake is one of definition.
What do you expect when you multiply the elements of the first column with the elements of the first row? In your example, there are 3 products, so that multiplication must result in a vector of length 3.
Oh, do you want to add the elements too? In that case, this is just a matrix multiply.
Taking the columns of matrix a times the rows of matrix b, we get simply:
c = b*a;
Learn to use MATLAB!
Do you wish to compute it using loops for homework? While I don't do your homework, you have made a credible effort.
a=[1 2 3;4 5 6;7 8 9];
b=[1 2 3;4 5 6;7 8 9];
sa = size(a,2);
sb = size(b,1);
c= zeros(sa,sb);
for i=1:sa
for j=1:sb
c(i,j)=dot(a(:,i),b(j,:));
end
end
Note my use of size instead of length. length is dangerous here. (Read the help for length to understand why.) As well, I used a dot product. Finally, see that I preallocated c with zeros. This is important.
Your teacher won't even let you use dot?
a=[1 2 3;4 5 6;7 8 9];
b=[1 2 3;4 5 6;7 8 9];
sa = size(a,2);
sb = size(b,1);
sk = size(a,1);
c= zeros(sa,sb);
for i=1:sa
for j=1:sb
for k = 1:sk
c(i,j)= c(i,j) + a(k,i)*b(j,k);
end
end
end

댓글 수: 1

galani ezekiel
galani ezekiel 2016년 5월 23일
thank you.for new idea of using size.

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

추가 답변 (2개)

Roger Stafford
Roger Stafford 2016년 5월 23일

0 개 추천

If A and B are your two square matrices
C = A.*(B.');
Guillaume
Guillaume 2016년 5월 23일

0 개 추천

"unfortunately it applys only for (3x3)." The code you've posted applies to any size of matrix. There's is nothing restricting it to 3x3 matrices, so it's not clear why you're asking the question.
Note that you don't need a loop to perform the operation you're carrying out. Have a look at memberwise multiplication .* and transpose .'.

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

질문:

2016년 5월 23일

댓글:

2016년 5월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by