r Õ Ð ý Ò Ð Á§¤트랩...matlab programming contents 0 ù r _ Õ & x Þ Ý Ð ý Ò Ô Ð...

38
매트랩 프로그래밍 최진탁·임석진(지음

Upload: others

Post on 18-Jan-2020

37 views

Category:

Documents


5 download

TRANSCRIPT

매트랩프로그래밍최진탁·임석진(지음

매트랩 프로그래밍 = Matlab programming / 최진탁, 임석진 지음. -- [파주]: 생능출판사, 2013p. ; cm

색인수록표제관련정보: MATLAB을 이용하여 과학적이고공학적인 문제를 효율적으로 해결할 수 있는 능력 배양ISBN 978-89-7050-777-4 93000 : ₩25000

컴퓨터 프로그래밍[computer programming]

005. 13-KDC5005. 13-DDC21 CIP2013008534

국립중앙도서관 출판시도서목록(CIP)

머리말

컴퓨터가없는일상생활을상상할수없듯이사회과학, 자연과학, 공학등그어

떤분야의학문에서도컴퓨터를사용하지않고연구하는것을생각할수없는환경

이 되었다. 그 중에서 자연과학과 공학 분야는 다른 어떤 분야보다 컴퓨터에 대한

의존도가높다고할수있다.

이런환경가운데자연과학또는공학분야에서컴퓨터를이용해서문제를해결

하는과정은주어진문제를수학적으로모델링하여수치해석기법으로프로그래밍

하고, 그 프로그램을 실행하여 결과를 구한 후, 수치적 또는 시각적으로 표시하여

분석하는일련의과정이라고말할수있다. 이때, 결과분석에서시각적으로표현된

결과는수치적으로표현된것보다훨씬직관적으로그문제를이해할수있게해준

다. 매트랩은 과학적 또는 공학적인 문제를 컴퓨터를 이용하여 효율적으로 해결할

수 있도록 프로그래밍과 수치해석을 위한 다양한 기능을 제공하는 도구로서, 해결

한문제의결과를시각적으로표현해주는강력한기능을가지고있어그문제를직

관적으로쉽게이해할수있도록도와준다. 매트랩은문제해결의전과정에서효율

적으로사용될수있는매우유용한도구이다.

이 책은 자연과학과 공학을 전공하는 학생들이 매트랩을 이용하여 전공에서 다

루어지는다양한과학적또는공학적문제를효율적으로해결할수있는능력을배

양하는것을목적으로쓰여졌다. 저자들은이책의독자층을매트랩에대한초심자

와중급자로정하고, 초심자의입장에서는프로그래밍에대한정확한이해를할수

있도록하 고중급자입장에서는수치해석을이용하여다양한공학적인문제를해

결할 수 있도록 하 다. 특히, 다년간의 강의를 통해 느꼈던 학생들이 어려워하는

점들을좀더이해하기쉽게쓰려고많은노력을기울 다.

이책은크게매트랩을이용한프로그래밍, 그래프를이용한주어진데이터의시

각적표현, 그리고매트랩을이용한수치해석의세부분으로구성되어있다.

매트랩을이용한프로그래밍을위하여

1장에서는매트랩을시작하고종료하기와프로그램의기본으로서변수정의, 연

산자, 기본내장함수등을소개하 다.

2장에서는매트랩에서변수의기본자료형인배열에관해상세히다루었다.

3장에서는 매트랩에서 배열에 관한 수학적인 연산, 덧셈, 뺄셈, 곱셈과 나눗셈,

PR

EF

AC

E

3

그리고 원소별 연산 등을 소개하고, 또한 프로그래밍 관점에서 중요하게 다루어질

논리연산과관계연산을다루었다.

4장에서는 앞의 1, 2, 3장에서 배운 내용을 토대로 매트랩을 이용한 프로그램,

즉 스크립트 파일을 작성하는 방법을 소개하고 다양한 문제를 가지고 스크립트 파

일을작성하는것을실습할수있도록하 다.

5장에서는스크립트파일이나사용자정의함수등에서사용할수있는실행제

어에 관해 소개하여 다양한 문제를 해결하는 과정에서 조건에 따른 실행과 반복적

인실행을할수있도록하 다.

6장에서는 매트랩에서 기본적으로 제공하는 내장함수 이외의 사용자의 필요에

따라 정의할 수 있는 사용자 정의 함수에 대한 기본 개념으로 시작하여 익명함수,

인라인함수, 부함수, 중첩함수등을소개하 다.

7장에서는서로다른자료형을묶어하나의데이터로사용할수있는셀배열과

구조체를소개하여공학적인문제를해결하는과정에서유연하게데이터를사용할

수있도록하 다.

그래프를이용한주어진데이터의시각적표현을위하여

8장에서는 2차원 그래프로 표현할 수 있는 명령어의 실행 방법을 소개하고 2차

원그래프를그리는실습예제들을실행할수있도록하 다.

9장에서는3차원그래프에대한명령어와그실행방법을소개하고실습할수있

도록하 다.

매트랩을이용한수치해석을위하여

10장에서는매트랩을이용한다항식의표현과계산, 일변수방정식의풀이, 다항

식의 미분과 수치적분, 커브 피팅(Curve fitting), 그리고 보간법을 소개하여 다양

한공학적문제를해결할수있는능력을배양하도록하 다.

이 책이나올수있도록도와주신생능출판사의김승기사장님과최복락실장님

께 감사드리고 편집 과정에서 수고해 주신 편집부 직원들께 심심한 감사의 말 을

드린다. 끝으로 이 책의 목적대로 과학도와 공학도들의 학업과 연구에 조금이나마

도움이되기를바라는마음이간절하며, 독자여러분의조언을기대한다.

2013년 5월

저자일동PR

EF

AC

EMATLAB PROGRAMMING

4

CO

NT

EN

TS

5

차례

매트랩 시작하기1.1 프로그램과 프로그래밍 11

1.2 매트랩 시작하기 15

1.3 기타 기능 25

1.4 명령어 창을 활용한 문제 해결 29

■ 연습문제 37

배열2.1 벡터(1차원 배열)의 생성 41

2.2 벡터의 인덱싱(indexing) 53

2.3 벡터의 확장과 축소 69

2.4 2차원 배열의 생성 76

2.5 2차원 배열의 인덱싱 79

2.6 2차원 배열의 확장과 축소 89

2.7 전치 연산자 93

2.8 다양한 배열 다루기 95

2.9 문자 배열 107

■ 연습문제 122

연산3.1 배열의 산술 연산 128

3.2 관계 연산 148

3.3 논리 연산 150

Chapter 01

Chapter 02

Chapter 03

CO

NT

EN

TS

MATLAB PROGRAMMING

6

3.4 매트랩 내장함수를 이용한 연산 155

■ 연습문제 164

스크립트 파일과 파일 입출력4.1 스크립트 파일 작성과 실행 169

4.2 데이터 입력 176

4.3 데이터 출력 179

4.4 작업공간 창의 변수의 저장과 호출 193

■ 연습문제 200

실행 제어5.1 선택문 204

5.2 반복문 218

5.3 중첩 조건문과 중첩 반복문 225

5.4 continue와 break 명령어 228

■ 연습문제 236

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

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

6.3 익명함수와 인라인함수 254

6.4 지역변수와 전역변수 258

6.5 부함수 262

6.6 중첩함수(nested function) 266

■ 연습문제 275

셀 배열과 구조체7.1 셀 배열 279

Chapter 04

Chapter 05

Chapter 06

Chapter 07

CO

NT

EN

TS

7

7.2 구조체 296

■ 연습문제 319

2차원 그래프8.1 plot 함수를 이용한 그래프 그리기 323

8.2 그래프에 텍스트 넣기 332

8.3 다중 그래프 352

8.4 함수 그래프(fplot 명령어) 364

8.5 다양한 그래프 371

■ 연습문제 394

3차원 그래프9.1 plot3를 이용한 3차원 그래프 그리기 399

9.2 관측점 설정하기 402

9.3 그물망 그래프 405

9.4 표면(surface) 그래프 413

9.5 등고선 그래프 415

9.6 다양한 3차원 그래프 421

■ 연습문제 429

공학 응용10.1 다항식 432

10.2 방정식 해법 440

10.3 미분과 적분 447

10.4 커브 피팅(curve fitting) 454

10.5 보간법(interpolation) 458

■ 연습문제 471

찾아보기 473

Chapter 08

Chapter 09

Chapter 10

1.1 프로그램과 프로그래밍

1.2 매트랩 시작하기

1.3 기타 기능

1.4 명령어 창을 활용한 문제 해결

M A T L A B P R O G R A M M I N G

01CHAPTER

매트랩 시작하기

컴퓨터가없다면우리생활이어떻게될까?

이질문에대한답을생각해본다면우리의일상생활에컴퓨터가얼마나큰

향을미치고있는지알수있다. 특히스마트폰과같은정보기기의일반화는우리

생활에대한컴퓨터의 향력을더욱크게하여이런기기없이생활하는것을상

상할수조차없게한다.

컴퓨터개발의목적중가장기본적인것은과학적문제나공학적문제와같이

대용량의데이터를처리해야하는문제를해결하기위한것으로대용량의데이터

를자동적으로빠르게연산하기위한것이다. 이렇게과학적문제를컴퓨터로처

리하기위해서는그문제를해결하기위한프로그램을이용하며, 이런프로그램을

작성하는도구는여러가지가개발되어왔다.

이 책은과학적문제를해결하기위한프로그램을작성하기위한여러가지도

구중에서매트랩이라는도구에대해설명하고매트랩을이용하여프로그램을작

성하여과학적문제를해결하기위해쓰 다.

이장에서는프로그램과프로그래밍에대해간단히언급한후매트랩을시작하

는방법그리고매트랩을구성하는각부분에대해설명한다. 그리고매트랩을이

용하여간단한계산문제를해결하는예제를통해매트랩의사용법을익힌다.

10

매트랩 시작하기

1. 프로그램을 정의하고 프로그래밍의 기본을 이해한다.

2. 매트랩을 시작하는 방법과 매트랩의 각 창을 이해한다.

3. 변수와 연산자를 이해하고 명령어 창에서 실행한다.

01CHAPTER

학 습 목 표

프로그램은 컴퓨터를 이용하여 문제를 해결하기 위한 명령어들의 모임이라고 정

의할수있다. 즉어떤데이터를어떻게연산하여결과로어떤데이터를내보내라

고 하는 일련의 과정을 서술한 것을 프로그램이라고 할 수 있다. [그림 1-1]에서

보인것과같이특정계산을위한명령어에데이터가입력되고명령어의수행결

과로계산된데이터가출력되는것이다. 이런 기본적인과정들을서술해놓은것

이 프로그램이다. 따라서 프로그램은 데이터와 명령어로 구성된다고 할 수 있으

며, 이런프로그램을작성하는과정을프로그래밍이라고한다.

컴퓨터를이용하여처리할수있는데이터는여러가지가있다. 컴퓨터를이용

하여 화를보기위해서는 상데이터를처리하여야하며음악을듣기위해서는

음향 데이터를 처리하여야 하고 수학 문제를 처리하기 위해서는 숫자 데이터를,

그리고문서를작성하기위해서는문자데이터를처리하여야한다. 이러한데이터

는컴퓨터가인식하여처리할수있는형식으로만들어야하며이것은최종적으로

는 2진수로표현된다.

프로그램을작성하기위한데이터의기본형식은숫자데이터와문자데이터로

나눌 수 있으며 문자 데이터도 컴퓨터 내부적으로는 숫자로 변환되어 처리된다.

상(데이터

2진수음향(데이터 숫자

(다양한(진법)문자(데이터

숫자(데이터

프로그램

명령어입력(데이터 출력(데이터

01

11

매트랩 시작하기CHAPTER

프로그램과 프로그래밍1.1

그림 1-1

프로그램의 정의

그림 1-2

컴퓨터를 이용해서 처리하는 데이터

문자데이터를숫자데이터로또는숫자데이터를문자데이터로변환하기위해서

는 [그림 1-3]에서 보인 것과 같은 코드표를 이용한다. [그림 1-3]에서 보인 것은

ASCII 코드표의 일부로서 대문자 알파벳‘A’는 십진수로는 65, 8진수로는 101,

16진수로는 41에 해당한다. 이렇게 모든 문자는 코드표에 해당하는 숫자로 변환

되어컴퓨터내부적으로처리된다. 알파벳뿐만아니라특수문자들도모두숫자로

변환되어처리된다.

1.1.1 상수와 변수

프로그램을작성하는과정에서처리되어야할데이터는상수와변수로구분된다.

상수는 어떤 값 자체를 의미하고 변수는 상수를 저장하는 기억장소에 대한 이름

이다.

기본적인 상수의형식은 [그림 1-4]에서 보인것과같이숫자와문자형이 있으

며숫자상수는 3, -20 등과같은정수형과 2.43 또는 -9.235 등과같은실수형

으로나뉜다. 문자상수는‘a’또는‘x’등과같이하나의문자로이루어진문자형

과‘student’또는‘I am sam.’등과 같이 2개 이상의 문자로 이루어진 문자열로

나뉜다.

코드표문자(데이터 숫자

Char Hex Oct OctDec DecChar Hex

@ 40 100 14064 96· 60

A 41 101 14165 97a 61

B 42 102 14266 98b 62

C 43 103 14367 99c 63

D 44 104 14468 100d 64

E 45 105 14569 101e 65

12

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-3

ASCII 코드표

변수는앞에서언급한상수를컴퓨터의저장장소, 즉메모리에저장할때상수

가저장되는메모리공간의위치에대한이름이다. 예를들어 3+5=8을계산하고

자할때, 정수형상수 3과 5를메모리에저장하고두값을더하면 8이라는정수

형상수를얻을수있다. [그림 1-5]에서보인것과같이 3과 5를저장할변수 x와

y를생성하고변수 x와 y 각각에 3과 5를대입하여저장할수있다.

우리는변수 x와 y가메모리의어디에저장되는지신경쓸필요없이단순히변

수의이름만을가지고변수에값을대입하여변수를사용함으로써프로그램을작

성할수있게된다. 변수에상수값을대입할때 [그림 1-5]의 표현식이라고되어

있는부분에보인것과같이변수에값을대입할때대입연산자라고하는 = 기호

를사용한다. 표현식 x=3은변수 x에정수형상수 3을대입하는것을의미한다.

[그림 1-6]은 표현식 x=3을 보인다. 대입연산자 =을 기준으로 왼쪽은 L-

value라 하고 오른쪽은 R-value라고 한다. L-value는 값을 저장하는 저장소의

의미이고 R-value는저장소에저장될값또는저장된값을의미한다. 따라서대

입연산자 =의 왼쪽에는 변수가, 오른쪽에는 상수 값이 올 수 있다. 수학에서 =

기호는‘좌변과우변이같다’는의미로사용되지만프로그래밍에서는 R-value를

L-value에 대입하라는 의미로 사용되며 3장에서 언급되겠지만‘같다(equal)’를

L-value R-value

x = 3

변수 상수

3

5

표현식

x

y

x = 3

y = 5

정수형

실수형변수

문자형

문자열문자

숫자

상수

01

13

매트랩 시작하기CHAPTER

그림 1-4

상수와 변수

그림 1-5

변수로의 상수 대입식

그림 1-6

L-value와 R-value

의미하는것은 = 기호를두개연이은‘==’이다.

대개의프로그래밍에서는어떤변수가저장할수있는상수의형식을정해놓고

그형식의상수만을저장할수있게한다. 이렇게되면 [그림 1-4]에서 보인것과

같이기본적으로변수는숫자상수를위한정수형변수와실수형변수, 그리고문

자상수를위한문자형변수와문자열변수가존재하게된다. 그러나이후에배우

겠지만 매트랩을 이용한 프로그래밍에서는 하나의 변수가 임의의 형식의 상수를

저장할수있는유연성을가질수있다.

변수는상수를저장하는저장소의역할을한다. 그러면변수는값을저장만하

는것일까? 변수는상수값을저장할수있을뿐아니라그변수에저장된값을사

용할수있게도할수있다. 변수에저장된값을사용하기위해서는변수가대입연

산자의 오른쪽으로 가면, 즉 변수가 R-value가 되면 된다. 이렇게 되면 변수는

그변수에저장되어있는상수값으로사용되는것이다.

[그림 1-7]의 (1)에서변수 x는 L-value로서상수 3을저장하는저장소로사용

된것이고 (2)에서는 R-value로사용되어저장하고있는상수 3을의미한다. y는

L-value로값을저장하는저장소의의미로사용되어 (2)의표현식은 R-value인

변수 x의값 3을 L-value인변수 y에대입하여변수 y도변수 x와같은값 3을가

지게 된다. 이렇게 변수는 L-value와 R-value로 자유롭게 사용되어 상수 값을

저장하거나또는저장된값이사용되어특정연산을수행되는데사용될수있다.

1.1.2 연산자와 명령어

앞 절에서 프로그램을 구성하는 데이터와 상수 그리고 변수에 관해 살펴보았다.

프로그램은 데이터와 이것을 처리하는, 즉 계산하는 기능이 필요하다. 예를 들어

수학식‘3+5=8’을계산하는프로그램을작성한다면정수형상수값 3과 5를적

당한변수에저장하고두변수값을더할기능이필요하다. 이렇게프로그램에서

특정한 기능을 수행하는 것을 연산자 또는 명령어라고 한다. 연산자는‘+’, ‘-’

등과 같이 기호로 표현되는 것을 의미하고 명령은 sum, sort 등과 같이 이름으로

표현된것을의미한다.

x = 3 (1)

y = x (2)

14

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-7

한 변수 x의 L-value와R-value로 사용

[그림 1-8]에서변수 x와 y에각각 3과 5를대입하고 (3)에서 x와 y를더하기연

산자‘+’를 이용하여 더하기 한 후, 변수 z에 더하기의 결과를 대입한다. 여기서

변수 x와 y는대입연산자 =의오른쪽에있기때문에 R-value로사용되어두변

수가 가지고 있는 값의 의미로 사용된 것이고, 변수 z는 대입연산자 =의 왼쪽에

있기때문에 L-value로사용되어계산된결과를저장하는저장소로서사용된것

을 의미한다. 여기서 두 값을 더하는 기능을 수행하는 sum이라는 명령어가 존재

한다면 (3)의표현식을‘z=sum(x,y)’로쓸수있다. 이러한명령어들은이후에매

트랩을본격적으로배우기시작하면서다양하게배울수있을것이다.

지금까지 우리는 프로그램이 무엇이며 프로그램을 구성하는 데이터와 명령에

대해간단히살펴보았다. 이제본격적으로매트랩을사용하는방법부터시작하여

매트랩을이용하여프로그램을작성하여과학적문제들을해결해나가보자.

이제본격적으로매트랩을시작해보자. 이 책은먼저매트랩이설치되어있다는

가정에서 출발하며 MATLAB R2009a를 기준으로 모든 것을 설명한다. 매트랩

을 실행시키기 위해서 바탕화면에 [그림 1-9]와 같은 매트랩 아이콘을 더블클릭

한다.

3

+

x

5

표현식

y

z x y

x = 3 (1)

y = 5 (2)

z = x+y (3)

01

15

매트랩 시작하기CHAPTER

그림 1-8

상수 대입식

매트랩 시작하기1.2

매트랩을 실행시키면 [그림 1-10]과 같은 매트랩 로고 화면이 출력된 후 [그림

1-11]과같은매트랩의기본데스크톱이보인다.

1.2.1 매트랩 데스크톱의 기본 창(Window)

매트랩의 데스크톱의 상단에는 기본적인 메뉴 바(menu bar)와 아이콘들이 있는

툴 바(tool bar)가 있고 그 밑으로 [그림 1-12]와 같이 명령어 창(Command

Window), 작업공간 창(Workspace Window), 현재 디렉터리 창(Current

Directory Window) 그리고 명령어 기록 창(Command History Window)의 4개

창이배치되어있다.

16

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-9(좌)

매트랩 아이콘

그림 1-10(우)

매트랩 로고

그림 1-11

매트랩의 기본 데스크톱

지금부터기본적인 4개의창을알아보자.

(1) 명령어 창(Command Window)

명령어창은변수를생성하여상수값들을저장하고생성된변수들을명령어나연

산자를이용하여계산하여결과값을얻을수있는창이다. 변수를생성하거나명

령어를입력하기위해서는 [그림 1-13]에보인것과같이프롬프트다음에위치하

는커서에서변수이름이나명령어를입력한다.

명령어 창에서 변수 x를 생성하여 3을 대입하고 변수 y를 생성하여 5를 대입한

후두변수를더하기하는계산을실행해보자.

커서

프롬프트

명령어(창(Command Window)

현재(디렉터리(창(Current Directory Window) 명령어(기록(창(Command History Window)

작업공간(창(Workspace Window)

01

17

매트랩 시작하기CHAPTER

그림 1-12

각 창의 이름

그림 1-13

프롬프트와 커서

예제 1-1

먼저 [그림 1-14]의 ①과 같이‘x=3’을 입력하고 엔터(Enter)를 입력하면 ②

와같이방금입력하여실행한명령의실행결과를명령어창에보여주어실행한

명령이 정상적으로 처리되었음을 알린다. 즉 변수 x를 생성하고 정수형 상수 3

을대입하여변수 x가 3이라는값을가지고있음을알리는것이다.

③과같이‘y=5’를입력하고실행하면변수 y가생성되고 y에 5가대입된다.

이제 ④에서와 같이‘x+y’를 입력하여 두 변수 x와 y를 더해보자. ④와 같이

입력하고엔터를입력하면⑤와같은결과가출력된다. ⑤에표시된숫자 8을보

면두변수의값이정상적으로더하기된것을알수있다. 그런데결과로표시된

식이‘ans=8’이다. 여기서 ans는매트랩이생성하는디폴트변수이다. 즉 ans는

값을 저장하는 변수인 것이다. 매트랩은 임의의 계산을 수행한 후에는 그 결과

값을어떤변수에저장하게되어있다. ④에서와같이두변수 x와 y의값을더한

후그결과값을저장할변수를지정하지않은경우에매트랩은계산결과를저

장하는디폴트변수 ans에계산된결과값을저장하여보여준다.

⑥과같이‘z=x+y’를입력하고엔터를입력하면 x와 y는 R-value가되어변

수에저장된값이연산자 +에의해더해진다. 그리고변수 z가 L-value가되어

18

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-14

간단한 계산식 ①

더하기한결과를저장하게된다. 여기서④와는다르게 L-value가정해져있기

때문에 ans라는변수에계산결과를저장하지않는다.

<명령어 창의 명령 삭제>

명령어 창에 보이는 명령들을 삭제하여 비어있는 명령어 창을 만들기 위해서 두

가지방법을사용할수있다.

ⅰ) 명령어창에서 clc 명령실행

ⅱ) 매트랩데스크톱의 Edit 메뉴의 Clear Command Window를선택

[그림 1-14(a)]는 clc 명령을사용하여명령어창에보이는명령을삭제한것을

보여준다.

[그림 1-14(b)]는 매트랩 데스크톱의 Edit 메뉴의 Clear Command Window를

선택하여명령어창의명령들을삭제하는것을보여준다.

실행

01

19

매트랩 시작하기CHAPTER

그림 1-14(a)

clc 명령의 사용법

(2) 작업공간 창(Workspace Window)

작업공간 창은 명령어 창에서 생성한 변수들의 속성을 보여주는 창이다. 변수의

이름, 변수의값, 변수가저장하고있는데이터의형식등의속성을보여준다.

[그림 1-15]는앞의예제 1-1을실행한후의작업공간창을보여준다. Name 속

성에변수 x, y, z와디폴트변수 ans가알파벳순서로정렬되어있고 Value 속성

에서는 각 변수의 값을 보이고 있다. 예제 1-1에서 x와 y는 입력한 대로 3과 5의

값이대입되어있으며 ans와 z는모두두변수 x와 y의합의결과인 8을대입받아

저장하고있다. 그리고 Class 속성은각변수의데이터형식을보여주는속성으로

서여기서는모든변수의데이터형식은 double, 즉숫자데이터라는것을보인다.

작업공간창에서보이는변수들의속성을추가하거나삭제하기위해서는 [그림

1-16]에서보인것과같이하여보이는속성을추가하거나삭제할수있다. [그림

20

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-14(b)

메뉴를 이용한 명령어창 지우기

그림 1-15

작업공간 창의 예

1-16]에서는 [그림 1-15]에서 보인 작업공간 창에 대해 변수들의 Size 속성을 추

가하기위한것이다.

<명령어 창에서 변수 확인>

작업공간 창은 변수를 보여주는 창이지만 명령어 창에서도 변수를 확인할 수 있

다. 이때사용하는명령어는 who와 whos이다.

ⅰ) who 명령어

명령어창에서 who 명령을입력하여 실행하면 현재작업공간 창에 저장된변

수들의이름을명령어창에보여준다.

ⅱ) whos 명령어

명령어창에서 whos 명령을입력하여실행하면현재작업공간창에저장된변

수들의이름, 크기와데이터형등을명령어창에보여준다.

[그림 1-16(a)]는 [그림 1-16]에서 보이는변수들에대해명령어창에서 who와

whos 명령어를실행하여변수들을확인한결과를보인다.

클릭

여기에서(마우스(오른쪽

버튼(클릭Size(항목이(추가됨

01

21

매트랩 시작하기CHAPTER

그림 1-16

작업공간 창에서 변수의속성 추가

[그림 1-16(a)]에 보인 것과 같이 who 명령어를 사용하면 작업공간 창에 저장

된변수들의 이름만명령어 창에 출력되고 whos 명령어를 사용하면 변수들의 이

름과크기등을표시해준다.

<작업공간 창의 변수 삭제>

작업공간창에보이는명령들을삭제하기위해서두가지방법을사용할수있다.

ⅰ) 특정변수삭제

명령어창에서‘clear 변수이름’을입력하여실행

ⅱ) 작업공간창의모든명령삭제

- 명령어창에서 clear 명령실행

- 매트랩데스크톱의 Edit 메뉴의 Clear Workspace를선택

[그림 1-16(b)]는 디폴트 변수 ans와 변수 x를 명령어 창에서‘clear ans x’를

입력하여실행하여작업공간창에서삭제한것을보인다.

실행(전 실행(후

22

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-16(a)

who 명령어와

whos 명령어 사용법

그림 1-16(b)

clear 명령어 사용법

[그림 1-16(c)]는명령어창에서‘clear’를입력하여작업공간창의모든변수를

삭제한것을보인다.

[그림 1-16(d)]는매트랩데스크톱의 Edit 메뉴의 Clear Workspace를선택하여

작업공간창의모든변수를삭제하는것을보여준다.

우리는앞에서 clc 명령을사용하여명령어창에보이는명령들을삭제하 다.

여기서한가지기억할것은 clc 명령을실행하더라도작업공간창에있는변수들

은아무런 향을받지않는다는것이다. 즉, clc 명령을이용하여명령어창의모

든내용을삭제하더라도작업공간창의변수는삭제되지않는다. clc 명령은단순

히명령어창을깨끗이하는것뿐이다.

실행(전 실행(후

01

23

매트랩 시작하기CHAPTER

그림 1-16(c)

작업공간 창에서 모든변수 지우기

그림 1-16(d)

메뉴를 이용해서 모든변수 지우기

(3) 명령어 기록 창(Command History Window)

명령어기록창은매트랩사용자가지금까지실행했던명령들을시간순으로기록

하여보여준다. [그림 1-17]은 예제 1-1을실행하고난후의명령어기록창을보

여준다.

명령어기록창에기록된명령어를삭제하기위해서는매트랩데스크톱의 Edit

메뉴의 Clear Command History를선택하면명령어기록창의모든명령을삭제

할수있다. [그림 1-18]은 Clear Command History를선택하여명령어기록창에

기록된명령어를삭제하는것을보여준다.

(4) 현재 디렉터리 창(Current Directory Window)

현재 디렉터리 창은 현재 디렉터리로 설정된 디렉터리(폴더)의 모든 내용을 보여

주는창이다. [그림 1-19]는‘C:/Temp’디렉터리가현재디렉터리로설정된것과

현재디렉터리창에서그디렉터리의내용을표시하는것을보여준다.

24

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-17

명령어 기록 창의 예

그림 1-18

메뉴를 이용하여 명령어기록 창의 모든 기록 지우기

[그림 1-20]은현재디렉터리를바꾸기위한과정을보인다. 현재디렉터리옆의

아이콘을클릭하여나타나는폴더찾아보기창을이용하여현재디렉터리로설정

하고자하는폴더를찾아클릭한후확인을클릭하여현재디렉터리를변경한다.

1.3.1 매트랩 종료하기

매트랩을종료하기위해서 3가지방법을사용할수있다.

ⅰ) File 메뉴의 Exit MATLAB을선택하여실행한다.

ⅱ) 명령어창에 exit 명령어또는 quit 명령어를입력하여실행한다.

클릭

현재(디렉터리

현재(디렉터리(창

01

25

매트랩 시작하기CHAPTER

그림 1-19

현재 디렉터리 창

그림 1-20

현재 디렉터리 지우기

기타 기능1.3

ⅲ) 매트랩데스크톱의오른쪽위의코너에있는 아이콘을클릭한다.

[그림 1-21]은매트랩을종료하는 3가지방법을보여준다.

1.3.2 시작 버튼

매트랩 데스크톱의 왼쪽 아래에 있는 시작 버튼 을 통하여 툴 박스

(Toolboxes)나 데스크톱 툴(Desktop tools)을 이용할 수 있으며 시뮬링크

(Simulink)나도움말창(Help Window)을이용할수도있다. [그림 1-22]는 시작

버튼을클릭하여나타나는시작메뉴를보여준다.

클릭

클릭

실행

26

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-21

매트랩 종료하기

그림 1-22

시작 버튼 활용

1.3.3 도움말 기능

매트랩에서제공하는다양한명령어와기능들에대한도움말은두가지방법으로

이용할수있다.

ⅰ) help 명령어이용

명령어 창에서‘help 특정명령어 이름’을 입력하여 특정 명령어에 대한 도

움말을볼수있다.

ⅱ) 도움말창(Help Window) 이용

시작 버튼을 클릭하여 나타나는 메뉴에서‘Help’를 클릭하여 도움말 창을

활성화한후, 다양한명령어와기능에대한도움말을볼수있다.

[그림 1-23]은 명령어 창에서‘help sum’을 실행하여 매트랩의 sum 명령어의

도움말을확인하는예를보여준다.

[그림 1-24]는 시작버튼을클릭하여나타난메뉴에서‘Help’를클릭하여활성

화한도움말창을보여준다. 이도움말창에서다양한매트랩명령어와기능에대

한도움말을참조할수있다.

실행

01

27

매트랩 시작하기CHAPTER

그림 1-23

매트랩의 도움말 기능

1.3.4 편집 창(Edit Window)과 그림 창(Graphics Window)

매트랩을이용한프로그램으로써 m파일(4장참조) 또는사용자정의함수(6장참

조)를작성하기위해서매트랩에서제공하는편집창을이용할수있으며, 매트랩

을이용하여과학적문제를해결한후그결과를그림으로그려보여주는그림창

을이용할수있다. [그림 1-25]는 편집창과그림창의예를보여준다. 편집창을

열고사용하는방법은 4장에서, 그림창을열어그래프를그리는방법은 8장에서

자세하게다루므로여기서는이런창을매트랩에서제공한다는것만확인하고넘

어가자.

편집(창 그림(창

클릭 클릭

28

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-24

도움말 창 이용

그림 1-25

매트랩의 편집 창과 그림 창

1.4.1 명령어 창에서 작업할 때 유의할 점

명령어창에서다양한명령을실행할때다음과같은사항을유의하여야한다.

●명령어 창에서는 대문자와 소문자를 구분하여 사용한다. 즉 동일한 문자의

대문자와 소문자는 전혀 다른 문자로 해석된다. 그 이유는 예를 들어 [그림

1-3]에서 보인 ASCII 코드표에서 보면 대문자 A는 십진수 65로 바뀌어 처

리되고소문자a는십진수 97로바뀌어처리되기때문이다.

●명령어 창에서 명령의 끝에 세미콜론(;)을 입력하면 실행 결과가 화면에 출

력되지않는다. [그림 1-26]의 ①처럼명령을실행하면바로그명령의실행

결과를명령어창에다시보여준다. 그러나②에서처럼명령의끝에세미콜

론을붙이면실행결과가명령어창에보이지않는다.

●명령어창의한라인에여러개의명령을한꺼번에입력하여그명령을차례

대로실행시킬수있다. 이때명령어들은콤마(,)로구분하여야하고왼쪽에

서 오른쪽으로 명령이 순차적으로 실행된다. [그림 1-26]의 ③에서 두 변수

x와 y를더하고곱하여각각변수 z와변수 a에대입하는명령을한라인에

같이 입력하고 실행한 결과를 보인다. 이때 두 명령을 그림에서 보인 것과

같이콤마(,)로구분한다. 그리고앞의명령은세미콜론을붙 기때문에그

01

29

매트랩 시작하기CHAPTER

그림 1-26

명령어 창에서 세미콜론활용

명령어 창을 활용한 문제 해결1.4

②③

결과가명령어창에보이지않고두번째명령은세미콜론을붙이지않았기

때문에그실행결과가명령어창에보인다.

●명령어 창에서 방향키를 사용하여 이전에 실행했던 명령을 다시 호출하여

실행할수있다. up 방향키를누를때마다이전에실행했던명령들이차례대

로명령어창의프롬프트에나타나고 down 방향키를누르면그반대방향으

로명령들이명령어창에나타난다.

1.4.2 변수 생성 규칙

명령어 창에서 데이터를 저장할 변수를 생성하기 위해 변수의 이름을 정할 때

다음의규칙에유의하여야한다.

●변수에포함될수있는문자는 문자알파벳, 0~9까지의숫자, 그리고밑줄

(_)을포함할수있다. 그리고문자는대문자와소문자가서로구분된다.

●모든변수는반드시문자로시작해야한다.

●한변수에포함될수있는문자의개수는최대 63개까지이다.

●변수에는구두점, 즉마침표, 콤마, 세미콜론, 콜론등이포함될수없다.

●변수의각문자들사이에공백이들어갈수없다.

●매트랩에서제공하는명령어와같은이름으로변수이름을만들수없다.

예를들어, 변수이름으로 who와같이매트랩의명령어를변수이름으로만들

수 없다. 앞으로 이 책에서 다양한 매트랩 명령어들을 배울 것이며 이런 이

름과동일하게변수이름을만들수없다.

●매트랩의예약어(reserved word)들과동일하게변수이름을만들수없다.

매트랩은 프로그램을 작성하기 위해 다양한 단어를 예약어(reserved word)

로예약해두었는데이런단어들을변수이름으로사용할수없다. 예약어를

확인하기위해서 [그림 1-27]과 같이명령어창에서명령어 iskeyword를실

행하면매트랩의예약어를확인할수있다.

30

매트랩 프로그래밍MATLABPROGRAMMING

1.4.3 매트랩에서 제공하는 특수 상수

매트랩에서는과학적문제를해결하는데필요한특수상수를정의해놓았다. 여기

서는이런특수상수를알아보자.

01

31

매트랩 시작하기CHAPTER

그림 1-27

매트랩의 예약어

상수 설명

NaN 수가아니라는의미이다. 예를들어 0/0을실행하면결과가 NaN으로나온다.

pi 원주율π(3.141592653589.....)

inf 무한대를의미한다.

i, j 복소수에서허수를나타내는단위

realmax 매트랩에서표현할수있는가장큰소수점수를의미, 1.7977e+308

realmin 매트랩에서표현할수있는가장작은소수점수를의미, 2.2252e-308

eps 매트랩에서수치계산할때발생하는허용오차, 2.2204e-016

1.4.4 간단한 산술 연산을 위한 연산자

매트랩에서기본적인연산으로사칙연산을실행할수있다. 여기서는사칙연산을

위한연산자를살펴보고 2장과 3장에서다양한연산자를다뤄보자.

매트랩에서나눗셈은오른쪽나눗셈과왼쪽나눗셈으로나눈다. 오른쪽나눗셈

은보통수학에서표현하는나눗셈이고왼쪽나눗셈은오른쪽나눗셈과역수관계

가있다. 나눗셈에관한것은 3장에서자세히설명한다.

[그림 1-28]에보인것과같이기본연산자를이용한계산을실행해보자.

32

매트랩 프로그래밍MATLABPROGRAMMING

연산자 기호 예

덧셈 + 3+5

뺄셈 - 3-5

곱셈 * 3*5

나눗셈오른쪽 / 2/5(=0.4)

왼쪽 \ 5\2(=2/5=0.4)

거듭제곱 ^ 2^5(=32)

그림 1-28

기본 연산자를 이용한 계산

예제 1-2

1.4.5 기본 명령어(내장함수)

매트랩에서 데이터를 계산하는 방법은 연산자를 이용하는 방법과 매트랩에서 제

공하는 명령어를 이용하는 방법이 있다. 이 명령어를 다른 말로 내장함수라고도

한다. 이절에서는기본적인매트랩의명령어, 즉내장함수를살펴보자.

<기본 수학함수>

<삼각함수>

01

33

매트랩 시작하기CHAPTER

함수 설명 예

sqrt(x) x의제곱근>> sqrt(64)

ans = 8

exp(x) 지수 ex>> exp(1)

ans = 2.7183

abs(x) 절대값>> abs(-4)

ans = 4

log(x)자연로그

밑이 e인로그

>> log(100)

ans = 4.6052

log10(x) 밑이 10인상용로그>> log10(100)

ans = 2.0000

factorial(x) x! 계산>> factorial(7)

ans = 5040

함수

(각: 라디안) 예

함수

(각: degree)예

sin(x)>> sin(pi/2)

ans = 1sind(x)

>> sind(90)

ans = 1

cos(x)>> cos(pi/3)

ans = 0.5cosd(x)

>> cosd(60)

ans = 0.5

tan(x)>> tan(pi/3)

ans = 1.7321tand(x)

>> tand(60)

ans = 1.7321

cot(x)>> cot(pi/6)

ans = 1.7321cotd(x)

>> cotd(30)

ans = 1.7321

<근사화 함수>

34

매트랩 프로그래밍MATLABPROGRAMMING

함수 설명 예

round(x) 가장가까운정수로근사화>> round(1.78)

ans = 2

fix(x)0 방향을향해서가장가까운정수를

구하는함수

>> fix(2.999)

ans = 2

>> fix(-1.98)

ans = -1

ceil(x) 올림함수

>> ceil(3.0001)

ans = 4

>> ceil(-3.999)

ans = -3

floor(x) 내림함수>> floor(-9/7)

ans = -2

rem(x,y)x를 y로 나누었을 때 나머지를 구하

는함수

>> rem(27,5)

ans = 2

sign(x)

부호함수

x>0이면 1, x<0이면 -1,

x=0이면0

>> sign(4)

ans = 1

>> sign(-3)

ans = -1

>> sign(0)

ans = 0

방정식 ( ) ( )x y20 15 42 2+ + - = 로 주어지는 원 위의 임의의 점과 직선

x y 2 0- + = 과의거리의최대값과최소값을구하라.

한점 ( , )p q 에서직선 ax by c 0+ + = 까지의거리는다음과같이계산된다.

da b

ap bq c2 2

=+

+ +

따라서원위의임의의점과직선사이의최소거리 dmin과최대거리 dmax는 [그

림 1-29]에 표시한것과같이원의중심과직선과의거리에서반지름을뺀거리

와반지름을더한거리가된다.

매트랩의 명령어 창에서 다음 [그림 1-30]과 같이 실행해 dmin과 dmax를 계산

해보자.

x - y + 2 = 0

dmax

dmin

(-20, 15)

풀이

01

35

매트랩 시작하기CHAPTER

공학예제

그림 1-29

원과 직선 사이의

거리

원의(중심의(좌표((p, q)와(반지름(r,(직선의(

각(계수(a,(b,(c를(정의한다.

원(위의(점과(직선(사이의(최소거리

d_min을(계산한다.

원(위의(점과(직선(사이의(최대거리

d_max을(계산한다.

원의(중심과(직선(사이의(거리(d를(매트랩

명령어(내장함수)(abs와(sqrt를(이용하여

계산한다.

36

매트랩 프로그래밍MATLABPROGRAMMING

그림 1-30

명령어 창에서 실행

1. 매트랩을사용하여다음을계산하시오.

(1) ( . )

7 8

42 3 75

+

+

(2) . .32 3 2 357 0 633: :+ -

2. 매트랩을사용하여다음을계산하시오.

(1) 2 3 20 /3 2 3 2+ +

(2) . ( )loge 3 74 31.2 5 +-

3. 매트랩을사용하여다음을계산하시오.

(1) ! ( / )log cos3 76 710+ + r

(2) ( ) ( ) ( )cos sin tan log53 102 52 c c +

4. 변수 x 4= 로정의하여매트랩을사용하여다음을계산하시오.

(1) x x2 104 2- + +

(2) logx x x253 +

5. 변수 .x 2 3= 으로 .y 1 7= 로하여매트랩을사용하여다음을계산하시오.

(1) cos sinx y2 2+

(2) ( )log x yy x10 +

01

37

매트랩 시작하기CHAPTER

연습문제

6. 변수 .x 3 83= 으로 .y 5 31= 로하여매트랩을사용하여다음을계산하시오.

(1) [ ] /x x y3 + _ i

(2) x yx

ye

234 xy

2+ + -7 A

7. 가로가 356cm이고세로가 231cm인벽을한변이 5cm인정사각형타일을이

용하여마감공사를하려고한다. 이때필요한타일의수를매트랩명령어 ceil

을사용하여계산하시오.

8. 다음과같은삼각형이주어졌을때 a의길이를 cosine 제2법칙을사용하여계

산하시오.

cosa b c bc A22 2 2= + -

B C

A

b=4c=5.5

a

93°

38

매트랩 프로그래밍MATLABPROGRAMMING