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

5 次查看(过去 30 天)
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];

采纳的回答

C B
C B 2021-11-8
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

更多回答(2 个)

Sean de Wolski
Sean de Wolski 2021-11-8
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 2021-11-8
编辑:Chunru 2021-11-8
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 个评论
Ashfaq Ahmed
Ashfaq Ahmed 2021-11-8
Thank you so much. But is there any specific reason why should I avoid for loop?
Chunru
Chunru 2021-11-8
MATLAB excels on the matrix computations. "c = sqrt(a.^2 + b.^2)" is much neater and more efficient that the codes with loops.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by