Write a program so that with help of 3 for-end loops we form a matrix C that will be equivalent to C= A*B - B*A

1 view (last 30 days)
Let 2 matrices (A and B) be given in MatLab.Write a program so that with help of 3 for-end loops we form a matrix C that will be equivalent to C= A*B - B*A
  3 Comments
Jan
Jan on 29 Apr 2022
Edited: Jan on 29 Apr 2022
This is a homework question. As usual, post, what you have tried so far and ask a specific question concern the remaining Matlab problem.
The actual problem is interesting. You can avoid to calculate A*B and B*A explicitly.
@Jakub Devera: If A*B and B*A is mathematically defined, A and B must be square matrices.

Sign in to comment.

Answers (2)

Srija Kethiri
Srija Kethiri on 2 May 2022
Hi Iva,
From my understanding you want to to get a matrix C, where C = A*B - B*A. To get the matrix C it is possible only if A and B both are square matrices with same dimension.
The code for finding C is:
[c,d] = size(A);
[e,f] = size(B);
C = zeros(c,c);
if(c==d && e==f && c==e)
for i=1:c
for j=1:c
sum1 =0;
sum2 =0;
for p = 1:c
sum1 = sum1 + A(i,p)*B(p,j);
sum2 = sum2 +B(i,p)*A(p,j);
C(i,j) = sum1-sum2;
end
end
end
end
  2 Comments
Jan
Jan on 2 May 2022
I agree with John.
Your code overwrites C(i,j) in each iteration of the inner loop. One variable would be enough for the accumulation.

Sign in to comment.


Matt J
Matt J on 2 May 2022
Edited: Matt J on 2 May 2022
A=rand(4); B=rand(4); %synthetic input data
M={A,B;B,A};
mask=[1 1;1,-1];
for i=1:4
M{i}=mask(i)*M{i};
end
for i=1:2
M{i,1}=M{i,1}*M{i,2};
end
C=0;
for i=1:2
C=C+M{i};
end
C-(A*B-B*A)%Check the result
ans = 4×4
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by