초급-MATLAB 해양자료처리

MATLAB - 제어문

Kamanberr 2023. 9. 16. 09:54

제어문은 쉽게 말해, 코드의 전반적인 흐름을 결정짓는 구문으로, 세부적으로는 반복문, 조건문 등이 있다. 

 

반복문, 조건문 그리고 논리연산자는 인덱싱만큼이나 MATLAB에서 상당히 중요하다. 

그러니 차근차근 기본을 다져보자.


For 문 : 반복문

주어진 조건 하에서 반복 명령을 수행하라!!!!

 

start부터 end까지 step씩 증가한다. 한 번 step이 증가할 때마다 'for문 안의 내용'이 반복 된다. 

for index = start : step : end
	반복되는 내용
end

다음 예시를 보도록 하자.

아래 코드는 1부터 10까지 i라는 변수가 (for문을 한 번 돌 때마다) 1씩 커지게끔 하는데, 그때마다 변수 i의 값을 명령창에 출력하도록 하는 것이다. (disp라는 함수는 괄호 안의 내용을 명령창에 출력하도록 하는 기능을 가진다.)

for i = 1:1:10
	disp(i);
end

즉, i가 맨 처음에는 1부터 시작한다. 그리고 disp(i)에 의해서 1이 출력된다. 

그리고 for문은 반복문이므로 다시 처음으로 되돌아와서 i에는 1이라는 값이 추가되어 i=2가 되고, disp(i)가 다시 한 번 수행된다. 즉, i는 1부터 10까지 1씩 커지는 것을 반복하며, 그때마다 for문 안의 내용을 반복해서 수행한다. 마지막으로 i가 10이 되어 disp(i)에 의해 10이 출력된 후, 해당 for문은 종료된다. 

 

이때 i가 커지는 step은 꼭 1이 아니어도 된다. 물론, 보통은 1이 제일 편해서 1씩 커지게끔 하고, default 값 또한 1이기 때문에 (step 값으로 1을 쓴다는 것을 생략하고) 위 코드는 다음과 같이 코드를 작성해도 동일한 기능을 한다.

for i = 1:10
	disp(i);
end

if 문 : 조건문

조건을 부여하고, 조건에 부합할 시 명령을 수행한다.
% 문법 1
if 조건식
	조건식이 참일 때 수행될 명령
end


% 문법 2
if 조건식
	조건식이 참일 때 수행될 명령
else
	조건식이 거짓일 때 수행될 명령
end


% 문법 3
if 조건식1
	조건식1이 참일 때 수행될 명령
elseif 조건식2
	조건식2가 참일 때 수행될 명령
elseif 조건식3
	조건식3이 참일 때 수행될 명령
else 
	위 조건문 모두 거짓일 때 수행될 명령
end

다음 예시를 보도록 하자.

맨 처음 변수 a는 1을 할당받았다. 그리고 조건문을 살펴보면, a가 10과 동일할 때, 그리고 a가 5와 동일할 때를 물어보고 있다. a는 두 조건문 모두 만족하지 않으므로, else에 있는 명령을 수행한다. 즉, wonderful을 출력하는 것이다.


여기서 '=='과 '='의 차이를 잘 이해해야 한다. MATLAB에서 '='은 지금까지 우리가 사용해왔던 것처럼 '할당'한다는 기능을 가진다. 만약 수학적으로 '동일'하다는 의미로 사용하고 싶다면, 우리는 '=='을 사용해야만 한다. 

즉, 위 코드에서 if a==10 이라는 구문은 "a가 10과 동일하냐?"라고 묻고 있는 것이다.

 

+ 여담으로, 앞에서 사용한 disp함수는 입력인수로 숫자를 넣어서, 숫자를 출력하고자 하였다. 그때는 그냥 disp(i)를 사용하면 되지만, 만약 출력하고자 하는 것이 string, 즉 문자열일 경우에는 위 코드와 같이 대괄호와 따옴표를 사용해야 한다!


break

제어문에서 특정 조건을 만족할 시, 모든 제어문 밖으로 빠져나간다. 

 

Rule

break for 루프나 while 루프의 실행을 종료한다. 루프에서 break 문 이후에 나오는 명령문은 실행되지 않는다.

중첩 루프에서 break 이 명령문이 실행되는 루프만 종료한다.

 


연산자

논리연산자는 if 조건문이나 Boolean indexing에 자주 사용된다. 

 

논리 연산자

&& : and

|| : or  (키보드 상에서 \랑 같이 있는 기호.)

 

관계 연산자

< , >

<= , >=

== : same

~= : not same