Getting errors and incorrect matrix form.

10 次查看(过去 30 天)
Hello I am relatively new to the matlab program and am struggling with this assignment.
Recall that if A is an m n matrix and B is a p q matrix, then the product C = AB is defined if and only if n = p, in which case C is an m q matrix. (a) Write a function M-file that takes as input two matrices A and B, and as output produces the product by rows of the two matrices. For instance, if A is 3 4 and B is 4 5, the product AB is given by the matrix C = [A(1,:)*B; A(2,:)*B; A(3,:)*B] The function file should work for any dimension of A and B and it should perform a check to see if the dimensions match (Hint: use a for loop to define the rows of C).
I have been able to clear my function of errors so that it returns an answer, however its not coming back as a matrix of the correct dimensions. I get the answer returned row by row it appears. My function is written as follows:
I have typed the following elements into matrices A and B in the command window with the ans following.
I expected a 2x2 matrix with elements [14,14;42,42].
Thanks for the help!
  2 个评论
Star Strider
Star Strider 2015-1-24
Your first version of this post, with code I could actually copy and run, was preferable. I edited it with the [{}Code] button so the code showed clearly, something you can easily do.
Please do not use screencaps of code! Nobody wants to type it in, and that’s what we have to do in that situation.
The essence (with my edit), copied from the previous correct version:
A=[1,1,1;3,3,3];
B=[2,2;5,5;7,7];
[m,n]=size(A);%Determines dimensions of A
[p,q]=size(B);%Determines dimensions of B
if (p==n) %Check the dimensions of the matrix to determine if its possible
C=zeros(m,q) %Creates a matrix, C, to be filled, initially zeros.
for i=1:m;
C(i,:)=A(i,:)*B %Computes every row of A times matrix B
end
else disp('dimensions do not match') %Dimesions do not match message
C=[];
end
Hadassah Fromowitz
Hadassah Fromowitz 2017-3-19
thank you! the C(i,:) part was what we were forgetting... (it was C= in the post)

请先登录,再进行评论。

采纳的回答

Star Strider
Star Strider 2015-1-24
You forgot to index ‘C’ !
C(i,:)=A(i,:)*B %Computes every row of A times matrix B
That works.
(It’s best not to use i and j as variables, because MATLAB uses them as its imaginary operators. Not a problem here, but it can cause confusion if you’re dealing with complex numbers.)
  2 个评论
Sundevil62301
Sundevil62301 2015-1-24
WOW fast response!!! That was what I needed. I had attempted variations of this and didn't quite get it.
Much appreciated!
Star Strider
Star Strider 2015-1-24
My pleasure!
And greetings from Albuquerque!

请先登录,再进行评论。

更多回答(0 个)

类别

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