How to find pythagorean triangle's hypotenuse in a matrix?

3 visualizzazioni (ultimi 30 giorni)
Hey guys,
I have two 4x4 matrices a and b. I want a third c matrix of 4x4 size where all the values will be c = sqrt(a.^2+b.^2).
For example, the first row of c will be [13 10 13 5];
How can I do this using a for loop?
a = [5 8 12 3; 8 12 63 20; 9 84 144 20; 24 11 15 180];
b = [12 6 5 4; 15 35 16 21; 40 13 17 99; 7 60 112 19];

Risposta accettata

C B
C B il 8 Nov 2021
a = [5 8 12 3; 8 12 63 20; 9 84 144 20; 24 11 15 180];
b = [12 6 5 4; 15 35 16 21; 40 13 17 99; 7 60 112 19];
c=[];
for i =1 : size(a,1)
c(i,:) = sqrt(a(i,:).^2+b(i,:).^2)
end
c = 1×4
13 10 13 5
c = 2×4
13 10 13 5 17 37 65 29
c = 3×4
13 10 13 5 17 37 65 29 41 85 145 101
c = 4×4
13 10 13 5 17 37 65 29 41 85 145 101 25 61 113 181

Più risposte (2)

Sean de Wolski
Sean de Wolski il 8 Nov 2021
This will be the most numrically stable.
a = [5 8 12 3; 8 12 63 20; 9 84 144 20; 24 11 15 180];
b = [12 6 5 4; 15 35 16 21; 40 13 17 99; 7 60 112 19];
hypot(a,b)
ans = 4×4
13 10 13 5 17 37 65 29 41 85 145 101 25 61 113 181

Chunru
Chunru il 8 Nov 2021
Modificato: Chunru il 8 Nov 2021
a = [5 8 12 3; 8 12 63 20; 9 84 144 20; 24 11 15 180];
b = [12 6 5 4; 15 35 16 21; 40 13 17 99; 7 60 112 19];
c = sqrt(a.^2 + b.^2)
c = 4×4
13 10 13 5 17 37 65 29 41 85 145 101 25 61 113 181
% Using for loops should be avoid for such problem in matlab
c = zeros(size(a));
for i=1:size(a,1)
for j=1:size(a, 2)
c(i,j) = sqrt(a(i,j)^2 + b(i,j)^2);
end
end
c
c = 4×4
13 10 13 5 17 37 65 29 41 85 145 101 25 61 113 181
  2 Commenti
Ashfaq Ahmed
Ashfaq Ahmed il 8 Nov 2021
Thank you so much. But is there any specific reason why should I avoid for loop?
Chunru
Chunru il 8 Nov 2021
MATLAB excels on the matrix computations. "c = sqrt(a.^2 + b.^2)" is much neater and more efficient that the codes with loops.

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by