Upload
lamnga
View
235
Download
0
Embed Size (px)
Citation preview
CH. 6 함수함수
학습 목표학습 목표
함수의 개념을 이해한다.1사용자 정의 함수를 정의와 응용문제에 활용한다.2익명함수와 인라인 함수의 이해와 활용.3
부함수와 중첩함수의 이해와 활용4
MATLAB PROGRAMMING CH. 6 2
내장함수( 명령어 )
MATLAB PROGRAMMING CH. 6 3
함수특정의 입력을 받아 원하는 계산을 수행한 후, 그 결과를 반환하는 프로그램
내장함수
매트랩에서 제공하는 명령어함수
매트랩에서 제공하는 명령어
사용자정의함수
사용자가 필요에 따라 정의해서 사용할 수있는 함수
MATLAB PROGRAMMING CH. 6 4
6.1 사용자 정의 함수 파일 작성
두 변의 길이와 그 두 변의 사잇각을 가지고 삼각형의 면적을 계산하는 사용자 정의 함수를 작성해 보자.
에디터 창 생성
File 메뉴 New를 클릭Blank M File 클릭
File 메뉴 New를 클릭 Function M File 클릭
MATLAB PROGRAMMING CH. 6 5
함수내의 명령어 입력함수내의 명령어 입력
MATLAB PROGRAMMING CH. 6 6
함수 파일 저장
File 메뉴 save를 클릭, 현재 디렉토리에 triangle.m으로 저장
함수 파일 저장
MATLAB PROGRAMMING CH. 6 7
생성된 파일 확인과 실행
MATLAB PROGRAMMING CH. 6 8
6.2 사용자 정의 함수 파일 구조
1) function 함수 정의 라인)2) 도움말
3) 함수 몸체4) end
MATLAB PROGRAMMING CH. 6 9
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
6.2.2 도움말
함수에 대한 설명을 제공하는 것 %로 시작
명령어 창에서 "help" 명령어를 이용해서 도움말 확인 명령어 창에서 “help 함수이름”을 입력하고 Enter
MATLAB PROGRAMMING CH. 6 11
6.2.3 함수 몸체
• 함수의 고유한 기능을 구현해 놓은 것• 함수가 출력인자를 가지고 있으면 함수의 몸체에서 반드시 출력인자에
값을 할당해야 함값을 할당해야 함
<키워드 end>• 함수 파일에 마지막에 들어가는 키워드 end는 생략이 가능수 파 에 마지막에 어가 키워 략이 가
- 중첩 함수 (nested function)에서는 생략이 불가능.
MATLAB PROGRAMMING CH. 6 12
(예제 6-1 )다음과 같은 간단한 사용자 정의 함수를 정의하고 실행해 보자.
showing() 함수- 입력인자와 출력인자가 필요없는 내부에 지정된 문자열을 출력하는 함수.
showing() 함수 실행 결과showing() 함수 실행 결과
MATLAB PROGRAMMING CH. 6 13
(예제 6-2)다음과 같이 1 개의 입력인자를 가지고 출력인자는 없는 함수를 정의하고 실행해보자.
showing_iteration() 함수입력인자에 반복 횟수를 받아서 내부에 지정된 문자열을 반복 출력하는 함수- 입력인자에 반복 횟수를 받아서 내부에 지정된 문자열을 반복 출력하는 함수.
따라서 함수 showing_iteration은 출력인자가 필요없다.
MATLAB PROGRAMMING CH. 6 14
showing_iteration() 함수 실행 결과
MATLAB PROGRAMMING CH. 6 15
(예제 6-3)전기 저항의 값을 가지는 벡터를 입력받아 그 저항들을 모두 병렬로 연결전기 저항의 값을 가지는 벡터를 입력받아 그 저항들을 모두 병렬로 연결했을 때의 등가 저항값을 리턴하는 함수 resisterParalleled를 작성하시오.
MATLAB PROGRAMMING CH. 6 16
MATLAB PROGRAMMING CH. 6 17
resisterParalleled 함수 실행 결과
MATLAB PROGRAMMING CH. 6 18
(풀이)
MATLAB PROGRAMMING CH. 6 19
MATLAB PROGRAMMING CH. 6 20
siren 함수 실행 결과
MATLAB PROGRAMMING CH. 6 21
6.3 익명함수와 인라인 함수
6.3.1 익명함수
익명함수는 m 파일로 저장하지 않고 간단한 수학함수들을 정의할 수 있는 함수
MATLAB PROGRAMMING CH. 6 22
MATLAB PROGRAMMING CH. 6 23
정의된 익명함수 ftn은 파일이 아니라 다른 변수와 마찬가지정의된 익명함수 ftn은 파일이 아니라 다른 변수와 마찬가지로 작업공간 창에 저장되어 사용됨.
MATLAB PROGRAMMING CH. 6 24
6.3.2 인라인함수
m 파일로 저장하지 않고 간단한 수학함수들을 정의할 수 있는 함수
MATLAB PROGRAMMING CH. 6 25
• inftn 함수
• inftn2 함수
또는
MATLAB PROGRAMMING CH. 6 26
MATLAB PROGRAMMING CH. 6 27
• 인라인함수 inftn과 inftn2를 정의한 후의 작업공간 창
MATLAB PROGRAMMING CH. 6 28
6.4 지역변수와 전역변수
6.4.1 지역변수
스크립트, 명령어 창 그리고 함수는 각각 내부에서 정의되는 변수들을 위한 별도의 메모리 공간을 갖는다.
이렇게 각각의 메모리 공간에 정의된 변수를 지역변수(local variable)라고 하고 이 지역변수는 배타적으로 사용된다.
MATLAB PROGRAMMING CH. 6 29
MATLAB PROGRAMMING CH. 6 30
6.4.2 전역변수
스크립트, 명령어 창 그리고 함수에서 모두 접근이 가능한 변수
• 전역변수 선언전역변수 선언
global 변수이름
MATLAB PROGRAMMING CH. 6 31
6 4 3 작업공간 창6.4.3 작업공간 창
작업공간 창은 명령어 창과 스크립트 파일 내부에 정의된 지역변수와 (함수, 명령어 창 그리고 스크립트 내부에서 정의된) 전역변수를 표시
MATLAB PROGRAMMING CH. 6 32
명령어 창, 그리고 스크립트 내부에서 정의된) 전역변수를 표시
6.5 부함수
매트랩에서는 하나의 함수 파일 (m 파일)은 여러 개의 함수를 포함할 수 있다.
MATLAB PROGRAMMING CH. 6 33
(예제 6-7)다음과 같은 8명의 컴퓨터 프로그래밍 과목 점수를 가지고 점수의 평균과 최고점수를 계산하는 사용자 정의 함수를 작성하시오.
32 69 72 99 83 62 55 92
MATLAB PROGRAMMING CH. 6 34
MeanMax 실행MeanMax 실행
MATLAB PROGRAMMING CH. 6 35
6.6. 중첩 함수 (nested function)
하나의 함수 안에 다른 함수가 정의되는 함수
MATLAB PROGRAMMING CH. 6 36
중첩함수에서는 서로의 메모리 공간에 접근하여 변수값을 읽거나 수정할 수 있음중첩함수에서는 서로의 메모리 공간에 접근하여 변수값을 읽거나 수정할 수 있음
MATLAB PROGRAMMING CH. 6 37
" iAAA "으로 저정한 후 실행한 결과• "priAAA.m"으로 저정한 후 실행한 결과
MATLAB PROGRAMMING CH. 6 38
(예제 6-8)앞의 부함수에서 작성했던 예제를 중첩함수를 이용하여 재작성해보자앞의 부함수에서 작성했던 예제를 중첩함수를 이용하여 재작성해보자.
MATLAB PROGRAMMING CH. 6 39
• NestedMeanMax m으로 저장하여 실행한 결과• NestedMeanMax.m으로 저장하여 실행한 결과
MATLAB PROGRAMMING CH. 6 40
(설명)(설명)
MATLAB PROGRAMMING CH. 6 41
MATLAB PROGRAMMING CH. 6 42
"plateCapacitor.m"으로 저장하고 실행한 결과
MATLAB PROGRAMMING CH. 6 43
MATLAB PROGRAMMING CH. 6 44
MATLAB PROGRAMMING CH. 6 45
실행 결과
MATLAB PROGRAMMING CH. 6 46