Efficient Matrix Multiplication with Nested Functions for MATLAB Homework

  • Thread starter Thread starter Feodalherren
  • Start date Start date
  • Tags Tags
    Functions Matlab
Click For Summary
The discussion focuses on a MATLAB homework assignment involving efficient matrix multiplication using nested functions. The provided code includes two functions: `MyTranspose` for transposing a matrix and `mymatmult` for multiplying two matrices, but the user encounters issues when running the code, as it produces no output. Key points raised include confusion over the implementation of `MyTranspose`, particularly why the variable B is used on both sides of the assignment, and suggestions for improving code readability through indentation. The user ultimately resolves their issue independently, indicating a successful understanding of the concepts discussed. The thread highlights the importance of proper function structure and debugging in MATLAB programming.
Feodalherren
Messages
604
Reaction score
6

Homework Statement


Untitled.png

Homework Equations


[/B]
Matlab:
----------------------
[FONT=Courier New]function [C]=mymatmult(A,B)
[L1 C1]=size(A);
[L2 C2]=size(B);

if C1 ~= L2
  error('dimension mismatch');
end %if ERROR

C=zeros(L1,C2);
for i=1:L1
  for j=1:C2
  C(i,j)=A(i,:)*B(:,j);
  end %in for
end %out for
end %function
------------------------------
[FONT=Courier New]function B = MyTranspose(A)

[rows cols] = size(A);

B=zeros(cols,rows);

for i=1:rows
  for j=1:cols
  B(j,i) = A(i,j)+B(j,i);
  end %in for
end %out fo

end %function
------------------------

The Attempt at a Solution


Matlab:
function [A1, A2] = MyTransposeProduct(A)

%place your nested function here--------------------------
  function B = MyTranspose(A)

  [rows, cols] = size(A);

  B=zeros(cols,rows);

  for i=1:rows
  for j=1:cols
  B(j,i) = A(i,j)+B(j,i);
  end %end in for
  end %end out for
  end %end in funct

%end nested function------------------------------------------

%second nested function---------------------------------------

  function [C]=mymatmult(A,B)
  [L1, C1]=size(A);
  [L2, C2]=size(B);

  if C1 ~= L2
  error('dimension mismatch');
  end %if ERROR

  C=zeros(L1,C2);
  for i=1:L1
  for j=1:C2
  C(i,j)=A(i,:)*B(:,j);
  end %in for
  end %out for

  A1=mymatmult(A,MyTranspose(A));
  A2=mymatmult(MyTranspose(A),A);  end %function

%end second nested function-----------------------------------

end % main function
But nothing happens when I run this code. No errors and no result...
 
Last edited by a moderator:
Physics news on Phys.org
Look where you put the code to calculate A1 and A2.

Also, I don't understand why you wrote MyTranspose that way. Why does B appear on both sides of the assignment?
 
  • Like
Likes Feodalherren
Nevermind, figured it out. Thanks!
 

Similar threads

  • · Replies 16 ·
Replies
16
Views
4K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 10 ·
Replies
10
Views
3K
Replies
2
Views
1K
  • · Replies 6 ·
Replies
6
Views
5K