46
CH. 6 함수

CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

  • Upload
    lamnga

  • View
    235

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

CH. 6 함수함수

Page 2: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

학습 목표학습 목표

함수의 개념을 이해한다.1사용자 정의 함수를 정의와 응용문제에 활용한다.2익명함수와 인라인 함수의 이해와 활용.3

부함수와 중첩함수의 이해와 활용4

MATLAB PROGRAMMING CH. 6 2

Page 3: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

내장함수( 명령어 )

MATLAB PROGRAMMING CH. 6 3

Page 4: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

함수특정의 입력을 받아 원하는 계산을 수행한 후, 그 결과를 반환하는 프로그램

내장함수

매트랩에서 제공하는 명령어함수

매트랩에서 제공하는 명령어

사용자정의함수

사용자가 필요에 따라 정의해서 사용할 수있는 함수

MATLAB PROGRAMMING CH. 6 4

Page 5: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.1 사용자 정의 함수 파일 작성

두 변의 길이와 그 두 변의 사잇각을 가지고 삼각형의 면적을 계산하는 사용자 정의 함수를 작성해 보자.

에디터 창 생성

File 메뉴 New를 클릭Blank M File 클릭

File 메뉴 New를 클릭 Function M File 클릭

MATLAB PROGRAMMING CH. 6 5

Page 6: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

함수내의 명령어 입력함수내의 명령어 입력

MATLAB PROGRAMMING CH. 6 6

Page 7: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

함수 파일 저장

File 메뉴 save를 클릭, 현재 디렉토리에 triangle.m으로 저장

함수 파일 저장

MATLAB PROGRAMMING CH. 6 7

Page 8: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

생성된 파일 확인과 실행

MATLAB PROGRAMMING CH. 6 8

Page 9: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.2 사용자 정의 함수 파일 구조

1) function 함수 정의 라인)2) 도움말

3) 함수 몸체4) end

MATLAB PROGRAMMING CH. 6 9

Page 10: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.2.1 함수 정의 라인

function [출력인자1, 출력인자2,....] = 함수이름(입력인자1, 입력인자2,.....)

함수 정의 입력인자 출력인자

function AAA() 없음 없음

function AAA(x1, x2, x3) x1, x2, x3 (3개) 없음

function y = AAA( ) 없음 y (1개)

function [y1, y2, y3] = AAA (x1) y1, y2, y3 (3개) x1 (1개)

MATLAB PROGRAMMING CH. 6 10

Page 11: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.2.2 도움말

함수에 대한 설명을 제공하는 것 %로 시작

명령어 창에서 "help" 명령어를 이용해서 도움말 확인 명령어 창에서 “help 함수이름”을 입력하고 Enter

MATLAB PROGRAMMING CH. 6 11

Page 12: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.2.3 함수 몸체

• 함수의 고유한 기능을 구현해 놓은 것• 함수가 출력인자를 가지고 있으면 함수의 몸체에서 반드시 출력인자에

값을 할당해야 함값을 할당해야 함

<키워드 end>• 함수 파일에 마지막에 들어가는 키워드 end는 생략이 가능수 파 에 마지막에 어가 키워 략이 가

- 중첩 함수 (nested function)에서는 생략이 불가능.

MATLAB PROGRAMMING CH. 6 12

Page 13: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

(예제 6-1 )다음과 같은 간단한 사용자 정의 함수를 정의하고 실행해 보자.

showing() 함수- 입력인자와 출력인자가 필요없는 내부에 지정된 문자열을 출력하는 함수.

showing() 함수 실행 결과showing() 함수 실행 결과

MATLAB PROGRAMMING CH. 6 13

Page 14: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

(예제 6-2)다음과 같이 1 개의 입력인자를 가지고 출력인자는 없는 함수를 정의하고 실행해보자.

showing_iteration() 함수입력인자에 반복 횟수를 받아서 내부에 지정된 문자열을 반복 출력하는 함수- 입력인자에 반복 횟수를 받아서 내부에 지정된 문자열을 반복 출력하는 함수.

따라서 함수 showing_iteration은 출력인자가 필요없다.

MATLAB PROGRAMMING CH. 6 14

Page 15: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

showing_iteration() 함수 실행 결과

MATLAB PROGRAMMING CH. 6 15

Page 16: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

(예제 6-3)전기 저항의 값을 가지는 벡터를 입력받아 그 저항들을 모두 병렬로 연결전기 저항의 값을 가지는 벡터를 입력받아 그 저항들을 모두 병렬로 연결했을 때의 등가 저항값을 리턴하는 함수 resisterParalleled를 작성하시오.

MATLAB PROGRAMMING CH. 6 16

Page 17: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MATLAB PROGRAMMING CH. 6 17

Page 18: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

resisterParalleled 함수 실행 결과

MATLAB PROGRAMMING CH. 6 18

Page 19: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

(풀이)

MATLAB PROGRAMMING CH. 6 19

Page 20: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MATLAB PROGRAMMING CH. 6 20

Page 21: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

siren 함수 실행 결과

MATLAB PROGRAMMING CH. 6 21

Page 22: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.3 익명함수와 인라인 함수

6.3.1 익명함수

익명함수는 m 파일로 저장하지 않고 간단한 수학함수들을 정의할 수 있는 함수

MATLAB PROGRAMMING CH. 6 22

Page 23: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MATLAB PROGRAMMING CH. 6 23

Page 24: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

정의된 익명함수 ftn은 파일이 아니라 다른 변수와 마찬가지정의된 익명함수 ftn은 파일이 아니라 다른 변수와 마찬가지로 작업공간 창에 저장되어 사용됨.

MATLAB PROGRAMMING CH. 6 24

Page 25: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.3.2 인라인함수

m 파일로 저장하지 않고 간단한 수학함수들을 정의할 수 있는 함수

MATLAB PROGRAMMING CH. 6 25

Page 26: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

• inftn 함수

• inftn2 함수

또는

MATLAB PROGRAMMING CH. 6 26

Page 27: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MATLAB PROGRAMMING CH. 6 27

Page 28: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

• 인라인함수 inftn과 inftn2를 정의한 후의 작업공간 창

MATLAB PROGRAMMING CH. 6 28

Page 29: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.4 지역변수와 전역변수

6.4.1 지역변수

스크립트, 명령어 창 그리고 함수는 각각 내부에서 정의되는 변수들을 위한 별도의 메모리 공간을 갖는다.

이렇게 각각의 메모리 공간에 정의된 변수를 지역변수(local variable)라고 하고 이 지역변수는 배타적으로 사용된다.

MATLAB PROGRAMMING CH. 6 29

Page 30: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MATLAB PROGRAMMING CH. 6 30

Page 31: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.4.2 전역변수

스크립트, 명령어 창 그리고 함수에서 모두 접근이 가능한 변수

• 전역변수 선언전역변수 선언

global 변수이름

MATLAB PROGRAMMING CH. 6 31

Page 32: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6 4 3 작업공간 창6.4.3 작업공간 창

작업공간 창은 명령어 창과 스크립트 파일 내부에 정의된 지역변수와 (함수, 명령어 창 그리고 스크립트 내부에서 정의된) 전역변수를 표시

MATLAB PROGRAMMING CH. 6 32

명령어 창, 그리고 스크립트 내부에서 정의된) 전역변수를 표시

Page 33: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.5 부함수

매트랩에서는 하나의 함수 파일 (m 파일)은 여러 개의 함수를 포함할 수 있다.

MATLAB PROGRAMMING CH. 6 33

Page 34: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

(예제 6-7)다음과 같은 8명의 컴퓨터 프로그래밍 과목 점수를 가지고 점수의 평균과 최고점수를 계산하는 사용자 정의 함수를 작성하시오.

32 69 72 99 83 62 55 92

MATLAB PROGRAMMING CH. 6 34

Page 35: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MeanMax 실행MeanMax 실행

MATLAB PROGRAMMING CH. 6 35

Page 36: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

6.6. 중첩 함수 (nested function)

하나의 함수 안에 다른 함수가 정의되는 함수

MATLAB PROGRAMMING CH. 6 36

Page 37: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

중첩함수에서는 서로의 메모리 공간에 접근하여 변수값을 읽거나 수정할 수 있음중첩함수에서는 서로의 메모리 공간에 접근하여 변수값을 읽거나 수정할 수 있음

MATLAB PROGRAMMING CH. 6 37

Page 38: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

" iAAA "으로 저정한 후 실행한 결과• "priAAA.m"으로 저정한 후 실행한 결과

MATLAB PROGRAMMING CH. 6 38

Page 39: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

(예제 6-8)앞의 부함수에서 작성했던 예제를 중첩함수를 이용하여 재작성해보자앞의 부함수에서 작성했던 예제를 중첩함수를 이용하여 재작성해보자.

MATLAB PROGRAMMING CH. 6 39

Page 40: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

• NestedMeanMax m으로 저장하여 실행한 결과• NestedMeanMax.m으로 저장하여 실행한 결과

MATLAB PROGRAMMING CH. 6 40

Page 41: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

(설명)(설명)

MATLAB PROGRAMMING CH. 6 41

Page 42: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MATLAB PROGRAMMING CH. 6 42

Page 43: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

"plateCapacitor.m"으로 저장하고 실행한 결과

MATLAB PROGRAMMING CH. 6 43

Page 44: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MATLAB PROGRAMMING CH. 6 44

Page 45: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

MATLAB PROGRAMMING CH. 6 45

Page 46: CH. 6 함수 - Prof. Soon S. Jarngssjarng.chosun.ac.kr/matlab/chapter06.pdf · 2017-05-29 · matlab programming ch. 6 2. 내장함수( 명령어) matlab programming ch. 6 3

실행 결과

MATLAB PROGRAMMING CH. 6 46