how to write a loop

I would like to obtain t values according to i parameters. If i=1, it should return just t1. If i=3, it should return t1, t2 and t3. If i=5, it should return t1,t2,t3,t4 and t5 and so on. How can write this part into a loop??
clear ; clc;
n = 8; r = 2; h = 5; p=3;
Ang_seg = 360/n;
for i=1:n
Xni(i) = r*cos((i-1)*Ang_seg*pi/180);
Yni(i) = r*sin((i-1)*Ang_seg*pi/180);
Zni(i) = 0;
Cbottom = [Xni' Yni' Zni'];
Xnk(i) = Xni(i);
Ynk(i) = Yni(i);
Znk(i) = h;
Ctop = [Xnk' Ynk' Znk'];
end
%how to write this part into a loop:
for i=1
t1 = ( Xni(i+1) - Xni(i) ) / ( ( Xnk(i+1) - Xni(i) ) - ( Xnk(i) - Xni(i+1) ) );
end
for i=3
t1 = ( Xni(i-1) - Xni(i-2) ) / ( ( Xnk(i) - Xni(i-2) ) - ( Xnk(i+5) - Xni(i-1) ) );
t2 = ( Xni(i) - Xni(i-2) ) / ( ( Xnk(i) - Xni(i-2) ) - ( Xnk(i-2) - Xni(i) ) );
t3 = ( Xni(i+1) - Xni(i-2) ) / ( ( Xnk(i) - Xni(i-2) ) - ( Xnk(i-1) - Xni(i+1) ) );
end
for i=5
t1 = ( Xni(i-3) - Xni(i-4) ) / ( ( Xnk(i-1) - Xni(i-4) ) - ( Xnk(i+2) - Xni(i-4) ) );
t2 = ( Xni(i-2) - Xni(i-4) ) / ( ( Xnk(i-1) - Xni(i-4) ) - ( Xnk(i+3) - Xni(i-2) ) );
t3 = ( Xni(i-1) - Xni(i-4) ) / ( ( Xnk(i-1) - Xni(i-4) ) - ( Xnk(i-4) - Xni(i-1) ) );
t4 = ( Xni(i) - Xni(i-4) ) / ( ( Xnk(i-1) - Xni(i-4) ) - ( Xnk(i-3) - Xni(i) ) );
t5 = ( Xni(i+1) - Xni(i-4) ) / ( ( Xnk(i-1) - Xni(i-4) ) - ( Xnk(i-2) - Xni(i+1) ) );
end

답변 (1개)

Matt Fig
Matt Fig 2012년 8월 22일
편집: Matt Fig 2012년 8월 22일

0 개 추천

Instead of using:
for i=1
use
if i==1
(And it is generally not recommended to mask MATLAB functions in your code, such as the function i.)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

2012년 8월 22일

Community Treasure Hunt

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

Start Hunting!

Translated by