can I escape the loop

1 次查看(过去 30 天)
Shiyun Li
Shiyun Li 2020-4-12
I am tring to use the length function the I wrote to caculate the 3 side of a triangle.
array x represent the x coordinates of 3 vertices of a triangle
array y represent the y coordinates of 3 vertices of a triangle
what I did is trying to use a loop to use the first two number in each arrays, then the first and the last one, then the second and the last one. (just because I found the patterns of the next question which I need to use this function)
here is my code, for now it double caculated using the second and the last number, is it possible to escape the loop?
if you can think of a better method please advise as well.
Thank you in advance.
x=[1 4 1];
y=[1 6 10];
%Use the tri_side function to caculate the length of the first triangle
for i=1:length(x)-1
%access the number in array to use in the function
x1=x(i);
x2=x(i+1);
y1=y(i);
y2=y(i+1);
%use the triSide function
result=triSide(x1,x2,y1,y2);
disp(result);
%for the side of the last length
x1=x(i);
y1=y(i);
x2=x(length(x));
y2=y(length(y));
%use the triSide function
result=triSide(x1,x2,y1,y2);
disp(result);
end
%%function that I use to caculate the length
function result=triSide(x1,x2,y1,y2)
%cacluate the length given the 2 coordinates
result=sqrt(((x1-x2)^2+(y1-y2))^2);
end
  2 个评论
Image Analyst
Image Analyst 2020-4-12
Did you try typing control-c?
Shiyun Li
Shiyun Li 2020-4-12
sorry I should make myself more clear, now I got 4,9, 5, 5 as the output now, the last two digiti is repeated. can I escape the loop to aviod the repetition? wanted answer 4,9,5
still thank you for you reply

请先登录,再进行评论。

回答(1 个)

Image Analyst
Image Analyst 2020-4-12
编辑:Image Analyst 2020-4-12
Index the result. So at the bottom of your loop:
result(i) = triSide(x1,x2,y1,y2);
if length(result) > length(unique(result))
% There is a repeat. Break out of the loop.
break; % The term is "break" rather then "escape".
end
Or if you wanted to check only the last two values for a repeat rather than check the entire vector:
result(i) = triSide(x1,x2,y1,y2);
if result(i) == result(i-1)
% The last two values are the same. Break out of the loop.
break; % The term is "break" rather then "escape".
end
  2 个评论
Shiyun Li
Shiyun Li 2020-4-12
thank you!!
can I ask what is the length(unique(result)) ?
Image Analyst
Image Analyst 2020-4-12
It give you just unique values, so
>> u = unique([4, 9, 5, 5])
u =
4 5 9
If all values are unique, then the vector and it's unique version will be the same length. If there is a repeat, then the unique version will be shorter.

请先登录,再进行评论。

类别

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