본문 바로가기

잡다

MATLAB #2

함수

function [...return_values = ] function_name([...parameter])
content...; //tab이나 중괄호 필요 없음
content...;
return_value1 = ~; // return 구문 사용 X

 

함수는 *.m 파일에서 선언한다.

기본적으로 밖으로  내보낼 함수에 대해서는 함수 파일의 이름과 함수의 이름이 동일해야 한다.

한 파일에는 많은 함수가 있을 수 있는데, 한 함수만 외부에서 접근이 가능하고 나머지는 내부에서만 사용한다.

 

//in myFunc.m

//외부로 노출되는 주함수
//파일이름과 함수 이름이 동일
function result = myFunc(a,b)
result = innerFunc(a,b);

//파일 내부에서만 사용가능한 부함수들
function value = innerFunc(a,b);
value = a + b + 3;

 

입력변수 개수 : nargin

function value = myFunc(a,b,c)
cond = true;
if nargin == 3
	cond = false;
end

if cond
	value = "under 3"
else
	value = "exactly 3"
end

함수의 입력변수 개수를 nargin을 통해 접근 가능.

 

입력 함수 input

value = input("prompt text" [, 's']?)

숫자나 문자를 입력받아, 주어진 변수에 저장한다.

문자열을 받고 싶다면 's'를 뒤에 붙여준다.

 

출력 함수

 

disp(something)

disp : 안으로 들어오는 값을 단순히 출력

 

 

fprintf([fileID ,]"format_string", ...values);

fprintf :

   주어진 규격에 맞춰 출력한다.

   fileID가 명시되면 파일에 출력.
   배열이 format에 맞게 들어오면, 배열을 전부 출력해준다.

x = [1:5]; // x = [1 2 3 4 5]
y = linspace(1, 10, 5); // y = [1 3.25 5.5 7.75 10]
z = [x ; y];
fprintf("%d %f\n", z);

// result
//1   1.000000
//2   3.250000
//3   5.500000
//4   7.750000
//5   10.000000

 

save & load

save filename args1 args2 ...

load filename args1 args2 ...

ex)

save file.txt a //값만 저장하므로 .mat 파일 사용하듯 입출력은 불가

확장자를 지정하지 않으면 .mat 파일이 대상이 된다.

save : filename(.mat) 파일에 args1... 을 저장. 파일이 없으면 생성. args 없으면 현재 작업공간의 모든 변수 저장

load : filename(.mat) 파일에서 args1... 을 가져옴. args 없으면 전부 가져옴

 

 

if - statement(조건문)

if condition1
	do_something;
elseif condition2
	do_something;
else
	do_something;
end

//ex

function showSomething(arr)
if length(arr) > 3
    disp(arr)
end

 

switch-statement

switch value
	case cond1
		doSomething();
	case cond2
		doSomething();
	...
	otherwise
		doSoemthing();
end

 

for-statement

for index = start:step:finish
	state
end

// ex : factorial

x = 1;
for i = 1:n
	x = x * i;
end
result = i;

 

 

error

error("error message");

//ex
function showSomething(arr)
if length(arr) > 3
    disp(arr)
else
    error('length is too short');
end

//>> showSomething([1 2])
//다음 사용 중 오류가 발생함: showSomething (5번 라인)
//length is too short

 

에러 메시지 및 에러 발생 라인 내용을 출력하고, 해당 함수를 빠져나온다.