여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용입니다. 해당 내용에 대한 모든 저작권은 문인식 교수님께 있음을 확인하시길 바랍니다.
지난 시간까지 프로그래밍을 하는데 있어서 가장 중요한 조건문과 반복문을 배웠습니다.
이번 시간에는 이러한 조건문과 반복문을 이용해서 함수를 작성해보는 예제를 진행하겠습니다.
User Defined Functions
MATLAB에서 함수를 정의하는 방법은 다소 어색합니다. 일단 함수를 어떻게 정의하는지 확인해보시죠.
function [output_args] = function_name(input_args)
% 주석 -> help 함수를 통해서 나올 내용
statements
end
일단 Python에서는 def 라는 예약어로 함수를 정의했다면 MATLAB에서는 function이란 예약어를 통해서 함수를 정의할 수 있습니다. 그리고 함수의 리턴값으로 나올 내용 [output_args] 를 명시해주고, 다음으로 함수의 이름인 function_name을 정해줍니다. 마지막으로 이 함수의 입력으로 들어갈 내용 [input_args] 를 명시해주면 됩니다. 그리고 함수가 끝났다는 예약어로 end가 마지막으로 오게 됩니다. 여기서 조금 특이한 점이라면 return 과 같은 예약어를 통해서 함수가 언제 끝나는 부분을 명시할 필요없다는 점입니다. 말로 하면 와닿지 않으실테니 입력으로 원의 반지름 길이를 넣으면 원의 둘레와 넓이를 계산해주는 함수를 짜보도록 합시다.
function [area, circum] = areacirc(rad)
% areacirc returns the area and
% the circumference of a circle
% Format: areacirc (radius)
area = pi * rad .* rad;
circum = 2 * pi * rad;
end
만약 함수의 출력을 하나만 받을 경우에 대해서는 대괄호 [ ] 를 이용하지 않고 바로 스칼라값으로 받을 수 있고, 아예 출력이 필요없는 경우에 대해서는 생략을 해도 무관합니다.
Modular Programs
이번에는 다른 함수나 스크립트에서 어떻게 불러올 수 있을까요? 이건 자세한 설명보다는 예제를 통해서 이해하는게 더 좋을거 같습니다.
위와 같은 예제를 동작시키기 위해서는 원의 반지름을 읽어오는 readradius 함수와 원의 넓이를 계산하는 calcarea 함수 그리고 원의 넓이를 출력해주는 printarea 함수가 필요합니다. 그리고 calcandprintarea 스크립트에서 이 모든걸 불어와서 사용하죠. 직접 코드로 돌려보세요!
% This is the main script to calculate the
% area of a circle
% It calls 3 functions to accomplish this
radius = readradius;
area = calcarea (radius);
printarea(radius,area)
function radius = readradius
% readradius prompts the user and reads the radius
% Ignores error-checking for now for simplicity
% Format: readradius or readradius()
disp('When prompted, please enter the radius in inches.')
radius = input('Enter the radius: ');
end
function area = calcarea(rad)
% calcarea returns the area of a circle
% Format: calcarea(radius)
area = pi * rad .* rad;
end
function printarea(rad,area)
% printarea prints the radius and area
% Format: printarea(radius, area)
fprintf('For a circle with a radius of %.2f inches,\n',rad)
fprintf('the area is %.2f inches squared.\n', area)
end
여기까지가 간단하게 MATLAB에서 함수를 쓰는 방법을 알아보았습니다.
참고자료
'프로그래밍 언어(Programming Language) > 매트랩(MATLAB)' 카테고리의 다른 글
[MATLAB] 5강 - 반복문 (0) | 2020.10.27 |
---|---|
[MATLAB] 4강 - 조건문 (0) | 2020.10.23 |
[MATLAB] 3강 - 입력과 출력 (0) | 2020.10.23 |
[MATLAB] 2강 - 벡터와 행렬 (0) | 2020.10.19 |
[MATLAB] 1강 - 설치 및 기초 문법 (0) | 2020.10.17 |