MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

56
MATLAB MATLAB MATLAB 개개개 개개 개개개 개개 4 4 개 개개개개 개개개 개개개 개개개 개개 개 개개개개 개개개 개개개 개개개 개개 -1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1 z

description

MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리. 목 차. MATLAB 작업공간 (workspace) 과 작업공간 창 스크립트 파일에 대한 입력 (input, …) 출력 명령어들 (disp, fprintf) save 와 load 명령어 데이터 가져오기와 내보내기 응용예제. 4 장 개요. - PowerPoint PPT Presentation

Transcript of MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

Page 1: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB

MATLABMATLAB 개요와 응용개요와 응용 44 장 스크립트 파일의 사용과 데이터 처리장 스크립트 파일의 사용과 데이터 처리

-1-0.5

00.5

1

-1

-0.5

0

0.5

1-1

-0.5

0

0.5

1

z

Page 2: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 2/55

목 차목 차

MATLAB MATLAB 작업공간작업공간 (workspace)(workspace) 과 작업공간 창과 작업공간 창 스크립트 파일에 대한 입력스크립트 파일에 대한 입력 (input, …)(input, …)

출력 명령어들출력 명령어들 (disp, fprintf)(disp, fprintf)

savesave 와 와 load load 명령어명령어 데이터 가져오기와 내보내기데이터 가져오기와 내보내기 응용예제응용예제

Page 3: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 3/55

44 장 개요장 개요

이 장에서는 이 장에서는 MATLABMATLAB 이 작업공간에 데이터를 저장하는 방법이 작업공간에 데이터를 저장하는 방법 , , 사용자가 사용자가 저장된 데이터를 볼 수 있는 방법저장된 데이터를 볼 수 있는 방법 , , 스크립트 파일에서 사용할 변수들을 스크립트 파일에서 사용할 변수들을 명령어 창이나 스크립트 파일에서 정의하는 방법명령어 창이나 스크립트 파일에서 정의하는 방법 , , 스크립트 파일이 실행될 스크립트 파일이 실행될 때 생성된 데이터를 출력하는 방법때 생성된 데이터를 출력하는 방법 , , 작업공간의 변수들을 저장하는 방법과 작업공간의 변수들을 저장하는 방법과 불러오는 방법불러오는 방법 , MATLAB , MATLAB 외부의 응용프로그램으로부터 데이터를 외부의 응용프로그램으로부터 데이터를 가져오거나 응용프로그램에 데이터를 내보내는 방법가져오거나 응용프로그램에 데이터를 내보내는 방법 등에 대해 기술한다등에 대해 기술한다 ..

변수의 정의변수의 정의 변수 이름에 값을 할당하여 정의하거나변수 이름에 값을 할당하여 정의하거나 , , 함수의 출력을 할당 받거나함수의 출력을 할당 받거나 , ,

MATLAB MATLAB 외부의 파일에서 불러온 데이터로 정의할 수 있다외부의 파일에서 불러온 데이터로 정의할 수 있다 .. 일단 변수들이 명령어 창일단 변수들이 명령어 창 (Command Window)(Command Window) 에서 정의되거나 스크립트 에서 정의되거나 스크립트

파일이 실행되면파일이 실행되면 , , 변수들은 변수들은 MATLABMATLAB 의 의 작업공간작업공간 (workspace)(workspace) 에 저장에 저장된다된다 . . 작업공간에 존재하는 변수들은 여러 가지 방법으로 출력하거나 저장할 수 작업공간에 존재하는 변수들은 여러 가지 방법으로 출력하거나 저장할 수

있으며 있으며 MATLAB MATLAB 외부의 응용프로그램으로 내보낼 수 있다외부의 응용프로그램으로 내보낼 수 있다 . . 마찬가지로 마찬가지로 MATLAB MATLAB 외부의 파일로부터 데이터를 작업영역으로 불러들인 후 외부의 파일로부터 데이터를 작업영역으로 불러들인 후 MATLABMATLAB에서 사용할 수도 있다에서 사용할 수도 있다 ..

Page 4: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 4/55

MATLAB MATLAB 작업공간과 작업공간 창작업공간과 작업공간 창 (1/2)(1/2)

MATLAB MATLAB 작업공간작업공간 (workspace)(workspace) 은 은 MATLABMATLAB 이 사용되는 동안 정의되고 이 사용되는 동안 정의되고 저장된 변수들을 포함한다저장된 변수들을 포함한다 . .

명령어 창과 스크립트 파일이 컴퓨터의 동일한 메모리영역인 작업공간을 명령어 창과 스크립트 파일이 컴퓨터의 동일한 메모리영역인 작업공간을 공유하므로공유하므로 , , 작업공간작업공간 (workspace)(workspace) 은 명령어 창에서 정의된 변수들과 은 명령어 창에서 정의된 변수들과 스크립트 파일이 실행될 때 정의된 변수들을 포함한다스크립트 파일이 실행될 때 정의된 변수들을 포함한다 . .

작업공간의 변수는 명령어 창과 스크립트 파일 양쪽 모두에서 인식하고 작업공간의 변수는 명령어 창과 스크립트 파일 양쪽 모두에서 인식하고 사용할 수 있으며 새로운 값으로 재할당할 수 있다사용할 수 있으며 새로운 값으로 재할당할 수 있다 . .

함수 파일함수 파일 (function file)(function file) 에서 정의된 변수는 별도의 작업공간을 사용에서 정의된 변수는 별도의 작업공간을 사용하므로 하므로 정상적으로는 프로그램의 다른 부분들이 이 변수를 공유할 수 없다정상적으로는 프로그램의 다른 부분들이 이 변수를 공유할 수 없다 . .

whowho 명령어는 작업공간에 현재 존재하는 변수들의 목록을 출력한다명령어는 작업공간에 현재 존재하는 변수들의 목록을 출력한다 . .

whoswhos 명령어는 작업공간의 현재 변수들의 목록과 함께 변수들의 크기와 명령어는 작업공간의 현재 변수들의 목록과 함께 변수들의 크기와 바이트 수바이트 수 , , 그리고 변수들의 클래스그리고 변수들의 클래스 (class)(class) 에 대한 정보를 출력한다에 대한 정보를 출력한다 . .

Page 5: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 5/55

>> >> ' Variables in memoryVariables in memory' % % 문자열 입력문자열 입력ans = Variables in memoryans = Variables in memory>> a = 7; E = 3; d = [5, a+E, 4, E^2] >> a = 7; E = 3; d = [5, a+E, 4, E^2] % % 변수 변수 a, E, d, g a, E, d, g 생성생성d = 5 10 4 9d = 5 10 4 9>> g = [a, a^2, 13; a*E, 1, a^E]>> g = [a, a^2, 13; a*E, 1, a^E]g =g = 7 49 137 49 13 21 1 34321 1 343

>> who>> whoYour variables are:Your variables are:E a ans d gE a ans d g

>> whos>> whos Name Size Bytes ClassName Size Bytes Class E 1x1 8 double arrayE 1x1 8 double array a 1x1 8 double arraya 1x1 8 double array ans 1x1 38 char arrayans 1x1 38 char array d 1x1 32 double arrayd 1x1 32 double array g 2x3 48 double arrayg 2x3 48 double arrayGrand total is 31 elements using 134 bytesGrand total is 31 elements using 134 bytes

MATLAB MATLAB 작업공간과 작업공간 창작업공간과 작업공간 창 (2/2)(2/2)

Page 6: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 6/55

스크립트 파일스크립트 파일

메모리에 현재 존재하는 변수들은 메모리에 현재 존재하는 변수들은 작업공간 창작업공간 창 (Workspace Window)(Workspace Window) 에서 에서 볼 수 있다볼 수 있다 . . 창이 열려있지 않은 경우창이 열려있지 않은 경우 , , DesktopDesktop 메뉴에서 메뉴에서 WorksapceWorksapce 를 를 선택하면 열 수 있다선택하면 열 수 있다 . .

작업공간 창에 표시된 변수들은 편집작업공간 창에 표시된 변수들은 편집 (( 수정수정 )) 도 가능하다도 가능하다 . . 변수 위에서 변수 위에서 마우스를 더블 클릭하면 마우스를 더블 클릭하면 배열편집기 창배열편집기 창 (Array Editor Window)(Array Editor Window) 이 열리며이 열리며 , , 변수의 내용이 이 창의 표 안에 표시된다변수의 내용이 이 창의 표 안에 표시된다 . . 배열편집기 창배열편집기 창에서도 원소를 에서도 원소를 편집할 수 있다편집할 수 있다 ..

gg 를 더블클릭를 더블클릭

Page 7: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 7/55

스크립트 파일 내부에서 계산에 사용되는 변수들에 대한 값의 할당 스크립트 파일 내부에서 계산에 사용되는 변수들에 대한 값의 할당 방법은 변수가 정의되는 장소와 방법에 따라 세 가지 방법이 있다방법은 변수가 정의되는 장소와 방법에 따라 세 가지 방법이 있다 ..

1. 1. 스크립트 파일 안에서 변수를 정의하고 값을 할당하는 경우스크립트 파일 안에서 변수를 정의하고 값을 할당하는 경우 사용자가 변수의 값을 변경하여 파일을 실행하려면사용자가 변수의 값을 변경하여 파일을 실행하려면 , , 파일을 편집하여 파일을 편집하여

수정하고 저장한 후수정하고 저장한 후 , , 스크립트 파일을 다시 실행해야 한다스크립트 파일을 다시 실행해야 한다 ..

% % ChCh44Ex2Ex2.m.m 은 세 게임에서 기록된 점수들의 평균값을 계산한다은 세 게임에서 기록된 점수들의 평균값을 계산한다 ..

% % 변수에 점수를 할당하는 부분이 스크립트 파일의 일부이다변수에 점수를 할당하는 부분이 스크립트 파일의 일부이다 ..

game1=75;game1=75;

game2=93; game2=93;

game3=68; game3=68; % % 변수들이 스크립트 파일 안에서 값을 할당받음변수들이 스크립트 파일 안에서 값을 할당받음ave_points=(game1+game2+game3)/3ave_points=(game1+game2+game3)/3

>> Ch4Ex2>> Ch4Ex2

ave_points =ave_points =

78.666778.6667

실행실행

스크립트 파일 내의 변수 값의 할당스크립트 파일 내의 변수 값의 할당 (1/5)(1/5)

Page 8: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 8/55

2. 2. 명령어 창에서 변수가 정의되고 값이 할당되는 경우명령어 창에서 변수가 정의되고 값이 할당되는 경우 스크립트 파일 안의 변수에 대해 명령어 창에서 값을 할당한다스크립트 파일 안의 변수에 대해 명령어 창에서 값을 할당한다 . . 명령어 명령어

창에서 정의된 변수는 스크립트 파일에서도 인식이 된다창에서 정의된 변수는 스크립트 파일에서도 인식이 된다 !! 다른 변수 값으로 스크립트 파일을 실행하려면다른 변수 값으로 스크립트 파일을 실행하려면 , , 명령어 창에서 변수 값을 명령어 창에서 변수 값을

새로 할당한 후새로 할당한 후 , , 스크립트 파일을 다시 실행시키면 된다스크립트 파일을 다시 실행시키면 된다 . .

% % ChCh44ExEx3.m 3.m 은 세 게임에서 기록된 점수들의 평균값을 계산한다은 세 게임에서 기록된 점수들의 평균값을 계산한다 ..

% % 명령어 창에서 변수 명령어 창에서 변수 game1, game2, game3game1, game2, game3 에 대한 점수의 할당을 한다에 대한 점수의 할당을 한다 ..

ave_points=(game1+game2+game3)/3ave_points=(game1+game2+game3)/3

>> game1=67; game2=90; game3=81; >> game1=67; game2=90; game3=81; % % 변수들이 명령어 창에서 값을 할당받음변수들이 명령어 창에서 값을 할당받음>> Ch4Ex3 >> Ch4Ex3 % % 스크립트 파일을 실행함스크립트 파일을 실행함ave_points =ave_points = 79.333379.3333>> game1=87; game2=70; game3=50; >> game1=87; game2=70; game3=50; % % 새로운 값들을 변수들에 할당함새로운 값들을 변수들에 할당함>> Ch4Ex3 >> Ch4Ex3 % % 스크립트 파일을 다시 실행함스크립트 파일을 다시 실행함ave_points =ave_points = 79.333379.3333

실행실행

스크립트 파일 내의 변수 값의 할당스크립트 파일 내의 변수 값의 할당 (2/5)(2/5)

Page 9: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 9/55

3. 3. 스크립트 파일에서 변수가 정의되지만스크립트 파일에서 변수가 정의되지만 , , 변수 값은 스크립트 파일이 변수 값은 스크립트 파일이 실행될 때 명령어 창에서 입력되는 경우실행될 때 명령어 창에서 입력되는 경우 변수는 변수는 inputinput 명령어를 이용하여 스크립트 파일에서 정의되며명령어를 이용하여 스크립트 파일에서 정의되며 , , 파일이 파일이

실행되면 명령어 창에서 사용자가 입력한 값이 변수에 할당된다실행되면 명령어 창에서 사용자가 입력한 값이 변수에 할당된다 .. input input 명령어 명령어 variable_name = input(‘variable_name = input(‘ 명령어 창에 표시할 메시지명령어 창에 표시할 메시지 ')')

화면에 메시지를 표시하고 사용자의 키보드 입력을 기다린다화면에 메시지를 표시하고 사용자의 키보드 입력을 기다린다 . . 사용자가 사용자가 입력을 마치면 입력값을 입력을 마치면 입력값을 variable_namevariable_name 에 저장한다에 저장한다 ..

input( ) input( ) 함수를 이용하여 한번에 여러 개의 수를 입력할 수 있다함수를 이용하여 한번에 여러 개의 수를 입력할 수 있다 . . 이때 이때 입력은 배열 형식으로 입력해야 한다입력은 배열 형식으로 입력해야 한다 ..

>> n=input('>> n=input(' 하루 사용료는하루 사용료는 ? ');? ');

하루 사용료는하루 사용료는 ? 500? 500

>> score = input(‘>> score = input(‘ 국어국어 , , 영어영어 , , 수학 성적은수학 성적은 ? : ’)? : ’)

국어국어 , , 영어영어 , , 수학 성적은수학 성적은 ? : [96 92 94]? : [96 92 94]

score = 96 92 94score = 96 92 94

스크립트 파일 내의 변수 값의 할당스크립트 파일 내의 변수 값의 할당 (3/5)(3/5)

Page 10: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 10/55

% % ChCh44ExEx4.m 4.m 은 세 게임에서 기록된 점수들의 평균값을 계산한다은 세 게임에서 기록된 점수들의 평균값을 계산한다 ..

% % 각 게임의 점수는 각 게임의 점수는 input input 명령어를 이용하여 각 변수에 할당된다명령어를 이용하여 각 변수에 할당된다 ..

game1=input('game1=input(' 첫 번째 게임에서 기록된 점수를 입력하라 첫 번째 게임에서 기록된 점수를 입력하라 : ‘);: ‘);

game2=input('game2=input(' 두 번째 게임에서 기록된 점수를 입력하라 두 번째 게임에서 기록된 점수를 입력하라 : ‘);: ‘);

game3=input('game3=input(' 세 번째 게임에서 기록된 점수를 입력하라 세 번째 게임에서 기록된 점수를 입력하라 : ‘);: ‘);

ave_points=(game1+game2+game3)/3ave_points=(game1+game2+game3)/3

>> Ch4Ex4 >> Ch4Ex4 % % 메시지 뒤에 점수를 입력한다메시지 뒤에 점수를 입력한다 ..첫 번째 게임에서 기록된 점수를 입력하라 첫 번째 게임에서 기록된 점수를 입력하라 : 67: 67두 번째 게임에서 기록된 점수를 입력하라 두 번째 게임에서 기록된 점수를 입력하라 : 91: 91세 번째 게임에서 기록된 점수를 입력하라 세 번째 게임에서 기록된 점수를 입력하라 : 70: 70ave_points =ave_points = 7676

실행실행

※ ※ 다음 슬라이드의 예와 비교하라다음 슬라이드의 예와 비교하라 . ☞. ☞

스크립트 파일 내의 변수 값의 할당스크립트 파일 내의 변수 값의 할당 (4/5)(4/5)

Page 11: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 11/55

% % ChCh44ExEx5.m5.m 은 세 게임에서 기록된 은 세 게임에서 기록된 점수들의점수들의% % 평균값을 계산한다평균값을 계산한다 ..

game(1)=input('game(1)=input(' 첫 번째 게임의 점수는첫 번째 게임의 점수는 ? : ');? : ');

game(2)=input('game(2)=input(' 두 번째 게임의 점수는두 번째 게임의 점수는 ? : ');? : ');

game(3)=input('game(3)=input(' 세 번째 게임의 점수는세 번째 게임의 점수는 ? : ');? : ');

ave_points=mean(game)ave_points=mean(game)

>> Ch4Ex5>> Ch4Ex5첫 번째 게임에서 기록된 점수는첫 번째 게임에서 기록된 점수는 ? : ? : 6767두 번째 게임에서 기록된 점수는두 번째 게임에서 기록된 점수는 ? : ? : 9191세 번째 게임에서 기록된 점수는세 번째 게임에서 기록된 점수는 ? : ? : 7070ave_points =ave_points = 7676

실행실행

% % ChCh44ExEx6.m6.m

game=input(‘game=input(‘ 세 게임의 점수는세 게임의 점수는 ? : ? : ');');

ave_points=mean(game)ave_points=mean(game)

>> Ch4Ex6>> Ch4Ex6세 게임의 점수는세 게임의 점수는 ? : 67 91 70? : 67 91 70??? 67 91 70??? 67 91 70 ||Error: Unexpected MATLAB expression.Error: Unexpected MATLAB expression.

>> Ch4Ex6>> Ch4Ex6세 게임의 점수는세 게임의 점수는 ? : [67 91 70]? : [67 91 70]ave_points =ave_points = 7676

스크립트 파일 내의 변수 값의 할당스크립트 파일 내의 변수 값의 할당 (5/5)(5/5)

Page 12: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 12/55

문자열 입력을 위한 문자열 입력을 위한 input input 명령어명령어

str = input(str = input(’’texttext’’, , ’’ss’’) ) 사용자가 작은 따옴표 없이 입력해도 글자들을 문자열을 변환하여 사용자가 작은 따옴표 없이 입력해도 글자들을 문자열을 변환하여 strstr 에 에 저장한다저장한다 . . 위 명령어에서 위 명령어에서 ’’ ss’’ 는 는 사용자 입력을 문자열로 변환함사용자 입력을 문자열로 변환함을 을 의미한다의미한다 . .

>> str=input('>> str=input('Name : Name : ', '', 'ss')')Name : HwangName : Hwangstr = str = HwangHwang>> size(str)>> size(str)ans =ans = 1 51 5

reply = reply = input('Do you want more? Y/N [Y]: ', 's')input('Do you want more? Y/N [Y]: ', 's');;if isempty(reply) if isempty(reply)

reply = 'Y';reply = 'Y';

endend

>> str=input('>> str=input('Name : Name : ', '', 'ss')')Name : Name : ‘‘HwangHwang’’str = str = `̀HwangHwang`̀>> size(str)>> size(str)ans =ans = 1 71 7

입 력 없 이 입 력 없 이 EnterEnter 키 를 키 를 누 르 면누 르 면 , reply, reply 는 비 어 는 비 어 있 게 되 므 로 있 게 되 므 로 if if 문 장 문 장 안 에 서 안 에 서 replyreply 에 에 default default 값 ‘값 ‘ Y’Y’ 가 설정된다가 설정된다 ..

Page 13: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 13/55

출력 명령어출력 명령어

MATLABMATLAB 은 명령어가 실행되면은 명령어가 실행되면 , , 명령어 뒤에 세미콜른이 붙어 있는 경우를 명령어 뒤에 세미콜른이 붙어 있는 경우를 제외하고는 결과를 화면에 출력한다제외하고는 결과를 화면에 출력한다 ..

특정 형식으로 화면 또는 파일에 결과를 출력하기 위해 사용하는 명령어로 특정 형식으로 화면 또는 파일에 결과를 출력하기 위해 사용하는 명령어로 dispdisp 와 와 fprintf fprintf 명령어가 있다명령어가 있다 . . 두 명령어는 명령어 창이나 스크립트 파일두 명령어는 명령어 창이나 스크립트 파일 , , 함수 파일 등에서 사용할 수 있다함수 파일 등에서 사용할 수 있다 .. disp disp 명령어는 변수 이름을 출력하지 않고 원소만을 화면에 출력함명령어는 변수 이름을 출력하지 않고 원소만을 화면에 출력함 fprintf fprintf 명령어는 화면이나 파일에 결과를 원하는 형식으로 출력할 때 사용함명령어는 화면이나 파일에 결과를 원하는 형식으로 출력할 때 사용함

disp disp 명령어명령어

disp(variable_name) disp(variable_name) 또는 또는 disp(‘disp(‘ 문자열 텍스트’문자열 텍스트’ ))

변수 이름은 출력하지 않고변수 이름은 출력하지 않고 변수의 원소들만 출력하거나 텍스트만 출력할 때 변수의 원소들만 출력하거나 텍스트만 출력할 때 사용된다사용된다 . .

disp disp 명령어에 의한 화면 출력은 새 줄에 표시된다명령어에 의한 화면 출력은 새 줄에 표시된다 .. disp disp 명령어는 명령어는 단 한 개의 변수만을 출력단 한 개의 변수만을 출력할 수 있다할 수 있다 ..

Page 14: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 14/55

배열 이름은 출력되지 배열 이름은 출력되지 않고 원소값만 출력됨않고 원소값만 출력됨

>> A = [5 9 1;7 2 4];>> A = [5 9 1;7 2 4];

>> disp(A)>> disp(A)

5 9 15 9 1

7 2 47 2 4

>> disp('>> disp(' 매트랩 프로그래밍 실매트랩 프로그래밍 실습습 ')')

매트랩 프로그래밍 실습매트랩 프로그래밍 실습

>> disp(' Math Chem Music'), disp(round(100*rand(3, 3)) )>> disp(' Math Chem Music'), disp(round(100*rand(3, 3)) )

Math Chem MusicMath Chem Music

81 91 2881 91 28

91 63 5591 63 55

13 10 9613 10 96

>> disp(' Math Chem Music')>> disp(' Math Chem Music')

Math Chem MusicMath Chem Music

>> disp(round(100*rand(3, 3)) )>> disp(round(100*rand(3, 3)) )

96 49 9296 49 92

16 80 7916 80 79

97 14 9697 14 96

>> x=[10 20 30]>> x=[10 20 30]

x =x =

10 20 3010 20 30

>> disp(x)>> disp(x)

10 20 3010 20 30

출력 명령어 출력 명령어 dispdisp (1/3)(1/3)

Page 15: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 15/55

>> Ch4Ex5>> Ch4Ex5첫 번째 게임에서 기록된 점수를 입력하라 첫 번째 게임에서 기록된 점수를 입력하라 : :

8989두 번째 게임에서 기록된 점수를 입력하라 두 번째 게임에서 기록된 점수를 입력하라 : :

6060세 번째 게임에서 기록된 점수를 입력하라 세 번째 게임에서 기록된 점수를 입력하라 : :

8282

게임에서 기록된 점수들의 평균값 게임에서 기록된 점수들의 평균값 : : 7777

실행실행

% % 이 스크립트 파일은 세 게임에서 기록된 점수들의 평균값을 계산한다이 스크립트 파일은 세 게임에서 기록된 점수들의 평균값을 계산한다 ..% % 각 게임의 점수는 각 게임의 점수는 input input 명령어를 이용하여 각 변수에 할당된다명령어를 이용하여 각 변수에 할당된다 ..% disp % disp 명령어가 결과를 출력하는 데 사용된다명령어가 결과를 출력하는 데 사용된다 ..game1=input('game1=input(' 첫 번째 게임에서 기록된 점수를 입력하라 첫 번째 게임에서 기록된 점수를 입력하라 : : ‘‘););game2=input('game2=input(' 두 번째 게임에서 기록된 점수를 입력하라 두 번째 게임에서 기록된 점수를 입력하라 : : ‘‘););game3=input('game3=input(' 세 번째 게임에서 기록된 점수를 입력하라 세 번째 게임에서 기록된 점수를 입력하라 :: ‘‘););ave_points=(game1+game2+game3)/3;ave_points=(game1+game2+game3)/3;disp(‘ ’)disp(‘ ’) % % 빈 줄을 출력함빈 줄을 출력함disp(‘disp(‘ 게임에서 기록된 점수들의 평균값 게임에서 기록된 점수들의 평균값 : ’): ’) % % 텍스트를 출력함텍스트를 출력함disp(ave_points)disp(ave_points)

출력 명령어 출력 명령어 dispdisp (2/3)(2/3)

Page 16: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 16/55

disp disp 명령어는 한 개의 변수만을 출력할 수 있으므로명령어는 한 개의 변수만을 출력할 수 있으므로 , , 두 개 이상의 변수들을 같이 두 개 이상의 변수들을 같이 출력하려면 출력할 변수들을 모두 포함하는 새 변수를 먼저 정의한 다음 출력한다출력하려면 출력할 변수들을 모두 포함하는 새 변수를 먼저 정의한 다음 출력한다 . .

결과를 표로 출력하려는 경우결과를 표로 출력하려는 경우 , , 먼저 수를 포함하는 배열 변수를 정의하고 먼저 수를 포함하는 배열 변수를 정의하고 disp disp 명령어로 이 배열을 출력한다명령어로 이 배열을 출력한다 . . 각 열에 대한 항목 이름도 각 열에 대한 항목 이름도 disp disp 명령어로 표시한다명령어로 표시한다 . .

disp disp 명령어에서는 배열의 출력형식명령어에서는 배열의 출력형식 (( 열의 폭열의 폭 , , 열과 열 사이의 간격열과 열 사이의 간격 )) 을 지정할 수 을 지정할 수 없으므로 각 항목명의 위치는 항목명 사이에 없으므로 각 항목명의 위치는 항목명 사이에 공백공백을 적절히 추가하여 조정해야 한다을 적절히 추가하여 조정해야 한다 ..

yr=[1984 1986 1988 1990 1992 1994 1996];yr=[1984 1986 1988 1990 1992 1994 1996];

pop=[127 130 136 145 158 178 211];pop=[127 130 136 145 158 178 211];

tableYP(:,1)=yr';tableYP(:,1)=yr';

tableYP(:,2)=pop';tableYP(:,2)=pop';

disp(' YEAR POPULATION')disp(' YEAR POPULATION')

disp(' (MILLIONS)')disp(' (MILLIONS)')

disp(' ')disp(' ')

disp(tableYP)disp(tableYP)

>> PopTable>> PopTableYEAR POPULATION YEAR POPULATION

(MILLIONS) (MILLIONS) 1984 1984 1271271986 1986 1301301988 1988 1361361990 1990 1451451992 1992 1581581994 1994 1781781996 1996 211211

출력 명령어 출력 명령어 dispdisp (3/3)(3/3)

Page 17: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 17/55

>> fprintf(‘>> fprintf(‘ 해가 없습니다해가 없습니다 . . 입력데이터를 확인하세요입력데이터를 확인하세요 ..’)’)

해가 없습니다해가 없습니다 . . 입력데이터를 확인하세요입력데이터를 확인하세요 . >>. >>

>> fprintf(‘>> fprintf(‘ 요청 자료가 없습니다요청 자료가 없습니다 .\n.\n 입력자료를 확인하세요입력자료를 확인하세요 .. \ \

n’)n’)

요청 자료가 없습니다요청 자료가 없습니다 ..

입력자료를 확인하세요입력자료를 확인하세요 ..

>>>>

\n\n 은 텍스트가 새 줄에서 은 텍스트가 새 줄에서 시작하도록 하는 출력 시작하도록 하는 출력 제어문자임제어문자임

출력 명령어 출력 명령어 fprintf()fprintf()

fprintf fprintf 명령어는 텍스트와 데이터를 화면에 출력하거나 파일에 저장할 수 있다명령어는 텍스트와 데이터를 화면에 출력하거나 파일에 저장할 수 있다 .. disp disp 명령어와 달리 명령어와 달리 fprintf fprintf 명령어는 출력형식을 지정할 수 있다명령어는 출력형식을 지정할 수 있다 . . 같은 줄에 같은 줄에

텍스트 변수와 수치 변수의 값을 섞어서 표시할 수 있고 수의 형식도 조절할 수 있텍스트 변수와 수치 변수의 값을 섞어서 표시할 수 있고 수의 형식도 조절할 수 있다다 ..

fprintf fprintf 명령어는 많은 옵션을 가지고 있어 복잡하므로 순차적으로 명령어를 명령어는 많은 옵션을 가지고 있어 복잡하므로 순차적으로 명령어를 살펴보기로 한다살펴보기로 한다 ..

fprintf fprintf 명령어를 이용한 텍스트 출력명령어를 이용한 텍스트 출력

fprintf( ‘fprintf( ‘ 텍스트 문자열텍스트 문자열 ')')

Page 18: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 18/55

escape escape 제어글자제어글자

화면에 출력되지 않고 출력을 제어하기 위해 문자열 안에 삽입되는 문자를 화면에 출력되지 않고 출력을 제어하기 위해 문자열 안에 삽입되는 문자를 escape escape 문자문자라고 한다라고 한다 . . 예를 들어 커서를 앞으로 한 칸 움직일 때예를 들어 커서를 앞으로 한 칸 움직일 때 (backspace), (backspace), 커서를 줄의 제일 처음으로 옮길 때커서를 줄의 제일 처음으로 옮길 때 (carriage return) (carriage return) 등에 사용된다등에 사용된다 ..

글 자 효 과

\b\b Backspace

\f\f Form feed

\n\n New line

\r\r Carriage return

\t\t Horizonal tab

\\\\ Backslash

\\'''' or or '''' 따옴표

%%%% Percent 글자

>> >> raterate = 4.523;= 4.523;

>> fprintf('>> fprintf('\''\'' 금년금년 '' '' 물가상승률은 물가상승률은 \n\n'), ...'), ...

fprintf('fprintf('\b%3.1f %% \b%3.1f %% 이다이다 \n\n', rate)', rate)

'' 금년금년 ' ' 물가상승률은 물가상승률은 4.5 % 4.5 % 이다이다

>> fprintf('>> fprintf('It''s Friday.\nIt''s Friday.\n')')

It's Friday.It's Friday.

>> a = [9 10 14 31];>> a = [9 10 14 31];

>> fprintf('>> fprintf('%02X %02X %02X %2X\n%02X %02X %02X %2X\n', a)', a)

09 0A 0E 1F09 0A 0E 1F

Page 19: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 19/55

fprintf fprintf 명령어를 이용한 텍스트 출력명령어를 이용한 텍스트 출력

fprintffprintf 의 텍스트 문자열에서 의 텍스트 문자열에서 \n\n 의 추가 여부에 따른 결과 비교의 추가 여부에 따른 결과 비교

fprintf(fprintf('' 해가 없습니다해가 없습니다 . . 입력데이터를 확인하세입력데이터를 확인하세요요 . '. ') )

x = 6; d = 19 + 5*x; x = 6; d = 19 + 5*x; fprintf(fprintf('' 다시 시도하세요다시 시도하세요 . '. ') ) y = d + x; y = d + x; fprintf(fprintf('' 다른 값을 입력하세요다른 값을 입력하세요 . '. ') )

fprintf(fprintf('' 해가 없습니다해가 없습니다 . . 입력데이터를 확인하세입력데이터를 확인하세요요 . . \n\n'') )

x = 6; d = 19 + 5*x; x = 6; d = 19 + 5*x; fprintf(fprintf('' 다시 시도하세요다시 시도하세요 . . \n\n'') ) y = d + x; y = d + x; fprintf(fprintf('' 다른 값을 입력하세요다른 값을 입력하세요 ..\n\n ' ') )

Page 20: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 20/55

텍스트와 수치 데이터의 혼합 출력텍스트와 수치 데이터의 혼합 출력

fprintf fprintf 명령어로 텍스트와 변수의 값명령어로 텍스트와 변수의 값 (( 수수 )) 을 같이 출력하기 위한 형식 을 같이 출력하기 위한 형식 ::

fprintf( fprintf( '' 텍스트 문자열 텍스트 문자열 %%--5.2f 5.2f 추가 텍스트추가 텍스트 \n\n'', , variable_name )variable_name )

% % 기호는 텍스트 내에 기호는 텍스트 내에 수가 삽입될 위치를 표시함수가 삽입될 위치를 표시함

수의 출력형식을 지정하는 요수의 출력형식을 지정하는 요소소 . . 예예 ) ) 실수를 다섯 자리 중 실수를 다섯 자리 중 소수점 소수점 두 자리로 표시두 자리로 표시 ..

값을 출력할 값을 출력할 변수 이름변수 이름

>> rate=132.56;>> rate=132.56;

>> fprintf(‘>> fprintf(‘ 금년금년 매출증가율은매출증가율은 %7.1f %7.1f 퍼센트이다퍼센트이다 \n\n', ', rate)rate)

금년금년 물가상승률은 물가상승률은 132.5 132.5 퍼센트이다퍼센트이다 ..

>> fprintf(‘>> fprintf(‘ 금년금년 매출증가율은매출증가율은 %3.0f %3.0f 퍼센트이다퍼센트이다 \n\n', ', rate)rate)

금년금년 물가상승률은 물가상승률은 133 133 퍼센트이다퍼센트이다 ..

>> fprintf(‘>> fprintf(‘ 금년금년 매출증가율은매출증가율은 %2.1f %2.1f 퍼센트이다퍼센트이다 \n\n', ', rate)rate)

금년금년 물가상승률은 물가상승률은 132.6 132.6 퍼센트이다퍼센트이다 ..

Page 21: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 21/55

입력입력 , , 출력 명령어 출력 명령어 fprintf()fprintf()

변환규격변환규격 (Conversion spec.)(Conversion spec.) 출력표시 지정출력표시 지정%f : 고정 소수점 표기%e, %E : 지수 표현%d, %i : 정수 표현%g, %G : %e 와 %f 중 짧은 쪽 표시%s : 문자열 표현 %c : 한 글자 표현

%% ++ 12.512.5 f \\n변환규격의 시작변환규격의 시작 ..숫자 또는 변수값이숫자 또는 변수값이삽입될 지점을 표시삽입될 지점을 표시

출력의 폭과 정밀도 조절출력의 폭과 정밀도 조절 예예 ) 12) 12 는 출 력 에 사 용 할 는 출 력 에 사 용 할 자 리 수 이 며자 리 수 이 며 , 5, 5 는 소 수 점 다 섯 는 소 수 점 다 섯 자리만 표시하라는 뜻임자리만 표시하라는 뜻임 . “. “%.5f%.5f””와 같이 출력 폭을 지정하지 않으와 같이 출력 폭을 지정하지 않으면면 , , 표시할 숫자의 정수부분에 표시할 숫자의 정수부분에 맞추어 폭을 자동으로 정한다맞추어 폭을 자동으로 정한다 ..

escape escape 제어글자제어글자

Flag(Flag( 선택선택 ):): 출력물의 정렬 조절출력물의 정렬 조절-- : : 왼쪽 정렬왼쪽 정렬+ : + : 부호부호 (+, (+, --)) 를 항상 표시를 항상 표시0 : 0 : 정수 앞의 남는 여백을 정수 앞의 남는 여백을 00 으로 으로 채움채움(( 빈칸빈칸 ): ): 정수 앞 여백을 빈칸으로 정수 앞 여백을 빈칸으로 채움채움

Page 22: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 22/55

>> Ch4Ex8>> Ch4Ex8첫 번째 게임에서 기록된 점수를 입력하라 첫 번째 게임에서 기록된 점수를 입력하라 : :

7575두 번째 게임에서 기록된 점수를 입력하라 두 번째 게임에서 기록된 점수를 입력하라 : :

6060세 번째 게임에서 기록된 점수를 입력하라 세 번째 게임에서 기록된 점수를 입력하라 : :

8181

세 게임에서 평균 세 게임에서 평균 72.000000 72.000000 점이 기록되었점이 기록되었다다 ..

>> >>

실행실행

텍스트와 수텍스트와 수 (( 변수의 값변수의 값 )) 가 결합되어 출력됨가 결합되어 출력됨

fprintf fprintf 명령의 사용 예명령의 사용 예

% % 이 스크립트 파일은 세 게임에서 기록된 점수들의 평균값을 계산한다이 스크립트 파일은 세 게임에서 기록된 점수들의 평균값을 계산한다 ..

% % 각 게임의 점수는 각 게임의 점수는 input input 명령어를 이용하여 각 변수에 할당된다명령어를 이용하여 각 변수에 할당된다 ..

% fprintf % fprintf 명령어가 결과를 출력하기 위해 사용된다명령어가 결과를 출력하기 위해 사용된다 ..

game(1)=input('game(1)=input(' 첫 번째 게임에서 기록된 점수를 입력하라 첫 번째 게임에서 기록된 점수를 입력하라 : : ‘‘););

game(2)=input('game(2)=input(' 두 번째 게임에서 기록된 점수를 입력하라 두 번째 게임에서 기록된 점수를 입력하라 : : ‘‘););

game(3)=input('game(3)=input(' 세 번째 게임에서 기록된 점수를 입력하라 세 번째 게임에서 기록된 점수를 입력하라 :: ‘‘););

ave_points=mean(game);ave_points=mean(game);

fprintf(fprintf(‘\n‘\n 세 게임에서 평균 세 게임에서 평균 %f %f 점이 기록되었다점이 기록되었다 .\n'.\n', , ave_points)ave_points)

Page 23: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 23/55

fprintf fprintf 명령어로 여러 변수 출력하기명령어로 여러 변수 출력하기

fprintf fprintf 명령어에서 한 개 이상의 변수 값들을 텍스트 안에 삽입할 수 있다명령어에서 한 개 이상의 변수 값들을 텍스트 안에 삽입할 수 있다 . . 이를 위해서는 수를 삽입할 텍스트 안의 위치에 이를 위해서는 수를 삽입할 텍스트 안의 위치에 %f(%f( 또는 또는 %%c, %d, …c, %d, …)) 를 를 기입하고기입하고 ,, 형식지정문형식지정문 (format) (format) 밖에 순서에 따라 변수 이름을 나열한다밖에 순서에 따라 변수 이름을 나열한다 ..

일반적인 명령어 형식 일반적인 명령어 형식 ::

>> v=158.4; >> v=158.4;

>> ang>> ang =30.00; =30.00;

>> d=17.091;>> d=17.091;

>> fprintf(‘%>> fprintf(‘%.1f.1f 도와 도와 %5.1f%5.1f km/h km/h 로로 발사된 미사일은 발사된 미사일은 %g km%g km 를 날아간다를 날아간다 .\n.\n', ang, ', ang,

v, d)v, d)

30.030.0 도와 도와 158.4 km/h158.4 km/h 로 발사된 미사일은 로 발사된 미사일은 17.091 km17.091 km 를 날아간다를 날아간다 ..

fprintf( fprintf( '' 텍스트 텍스트 … … %f%f … … %f%f … … %f%f …\n …\n'', var1, , var1, var2var2, , var3var3 ))

Page 24: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 24/55

>> Ch4Ex7>> Ch4Ex71584.00 km/h1584.00 km/h 의 속도로 의 속도로 30.00 30.00 각도에서 발사된 발사체는 각도에서 발사된 발사체는 17.091 km17.091 km 를 날아갈 를 날아갈 것이다것이다 ..>> >>

여러 변수 값의 출력 예여러 변수 값의 출력 예

% % 이 프로그램은 발사체의 초기속도와 발사각도가 주어졌을 때이 프로그램은 발사체의 초기속도와 발사각도가 주어졌을 때% % 발사체가 날아가는 거리를 계산한다발사체가 날아가는 거리를 계산한다 ..

% % 텍스트와 수를 함께 출력하기 위해 텍스트와 수를 함께 출력하기 위해 fprintf fprintf 명령어를 사용한다명령어를 사용한다 ..

v=1584; % v=1584; % 초기 속도초기 속도 (km/h)(km/h)

theta=30; % theta=30; % 발사 각도발사 각도 (degree)(degree)

vms=v*1000/3600;vms=v*1000/3600;

t=vms*sind(30)/9.81;t=vms*sind(30)/9.81;

d=vms*cosd(30)*2*t/1000;d=vms*cosd(30)*2*t/1000;

fprintf(fprintf('%4.2f km/h'%4.2f km/h 의 속도로 의 속도로 %3.2f %3.2f 각도에서 발사된 발사체는 각도에서 발사된 발사체는 %g km%g km 를 를 날아갈 것이다날아갈 것이다 .\n'.\n', v, theta, d), v, theta, d)

Page 25: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 25/55

fprintf fprintf 명령어의 예명령어의 예

>> B = [5.4 540];>> B = [5.4 540];

>> fprintf(1, '>> fprintf(1, '%4.2f m%4.2f m 는 는 %6.1f mm%6.1f mm 이다이다 .\n.\n', B, 6.8, 680)', B, 6.8, 680)

5.40 m5.40 m 는 는 540.0 mm540.0 mm 이다이다 ..

6.80 m6.80 m 는 는 680.0 mm680.0 mm 이다이다 ..

>> x = 0:.2:1; y = [x; exp(x)];>> x = 0:.2:1; y = [x; exp(x)];

>> fprintf(>> fprintf(' x y\n'' x y\n'))

>> fprintf(>> fprintf('%6.2f %12.8f\n''%6.2f %12.8f\n', y), y)

x yx y

0.00 1.000000000.00 1.00000000

0.20 1.221402760.20 1.22140276

0.40 1.491824700.40 1.49182470

0.60 1.822118800.60 1.82211880

0.80 2.225540930.80 2.22554093

1.00 2.718281831.00 2.71828183

Page 26: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 26/55

fprintf fprintf 명령어에 대한 추가 설명명령어에 대한 추가 설명

fprintf fprintf 명령은 벡터화되어 있으므로명령은 벡터화되어 있으므로 , , 변수가 벡터나 행렬인 경우 변수의 변수가 벡터나 행렬인 경우 변수의 모든 원소가 출력될 때까지 모든 원소가 출력될 때까지 fprintf fprintf 명령이 반복된다명령이 반복된다 . . 변수가 행렬인 경우변수가 행렬인 경우 , , 열 단위로 데이터가 출력된다열 단위로 데이터가 출력된다 ..

x=1:5;x=1:5;

y=sqrt(x);y=sqrt(x);

T=[x; y];T=[x; y];

fprintf(fprintf('' 만일 수가 만일 수가 %i%i 이면이면 , , 이 수의 제곱근은 이 수의 제곱근은 %f%f 이다이다 .\.\

n'n', T), T)T =T =

1.0000 2.0000 3.0000 4.0000 5.00001.0000 2.0000 3.0000 4.0000 5.0000

1.0000 1.4142 1.7321 2.0000 2.23611.0000 1.4142 1.7321 2.0000 2.2361

만일 수가 만일 수가 1 1 이면이면 , , 이 수의 제곱근은 이 수의 제곱근은 1.000000 1.000000 이다이다 ..

만일 수가 만일 수가 2 2 이면이면 , , 이 수의 제곱근은 이 수의 제곱근은 1.414214 1.414214 이다이다 ..

만일 수가 만일 수가 3 3 이면이면 , , 이 수의 제곱근은 이 수의 제곱근은 1.732051 1.732051 이다이다 ..

만일 수가 만일 수가 4 4 이면이면 , , 이 수의 제곱근은 이 수의 제곱근은 2.000000 2.000000 이다이다 ..

만일 수가 만일 수가 5 5 이면이면 , , 이 수의 제곱근은 이 수의 제곱근은 2.236068 2.236068 이다이다 ..

첫 번 째 행 이 첫 번 째 행 이 11 부 터 부 터 55까지의 수이고 두 번째 행이 까지의 수이고 두 번째 행이 첫 번째 행의 제곱근인 첫 번째 행의 제곱근인 2×52×5의 행렬 의 행렬 TT 를 생 성 하 고 를 생 성 하 고 출력하는 스크립트 파일출력하는 스크립트 파일

Page 27: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 27/55

파일 입출력파일 입출력

파일로부터 데이터를 읽거나 파일에 데이터를 기록하려고 할 때는 파일로부터 데이터를 읽거나 파일에 데이터를 기록하려고 할 때는 먼저 운영체제로부터 파일에 대한 접근허락을 받고 접근에 사용할 먼저 운영체제로부터 파일에 대한 접근허락을 받고 접근에 사용할 신분증인 파일 식별자신분증인 파일 식별자 (file identifier)(file identifier) 를 받아야 한다를 받아야 한다 .. 파일을 연구실이라고 하면파일을 연구실이라고 하면 , , 연구실에 들어가서 일을 하려면 연구실용 연구실에 들어가서 일을 하려면 연구실용

열쇠가 있어서 연구실 문을 열어야 한다열쇠가 있어서 연구실 문을 열어야 한다 . . 또 일을 마치고 연구실을 나올 또 일을 마치고 연구실을 나올 때는 연구실 안의 내용을 보호하기 위해 열쇠로 문을 잠궈야 한다때는 연구실 안의 내용을 보호하기 위해 열쇠로 문을 잠궈야 한다 . . 결국 결국 일 을 하 려 면 연구실 문 을 열 수 있 는 열쇠가 반드 시 필요 하 다일 을 하 려 면 연구실 문 을 열 수 있 는 열쇠가 반드 시 필요 하 다 . .

마찬가지로 파일에 작업을 하려면 파일을 열 수 있는 열쇠인 파일 식별자마찬가지로 파일에 작업을 하려면 파일을 열 수 있는 열쇠인 파일 식별자(file identifier)(file identifier) 가 있어야 한다가 있어야 한다 ..

파일을 열기 위해서는 파일을 열기 위해서는 fopen fopen 명령을 사용하며명령을 사용하며 , , 파일 이름과 함께 파일 이름과 함께 파일을 여는 목적이 쓰기 위한 것인지 읽기 위한 것인지를 밝혀야 파일을 여는 목적이 쓰기 위한 것인지 읽기 위한 것인지를 밝혀야 한다한다 . . 파일을 열고 작업을 마친 후에는 파일을 열고 작업을 마친 후에는 fclose fclose 명령을 이용하여 명령을 이용하여 반드시 파일을 닫아야 한다반드시 파일을 닫아야 한다 ..

Page 28: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 28/55

fprintf fprintf 명령어로 출력을 파일에 저장함으로써 나중에 저장된 데이터를 명령어로 출력을 파일에 저장함으로써 나중에 저장된 데이터를 MATLABMATLAB 이나 다른 응용프로그램에서 사용할 수 있다이나 다른 응용프로그램에서 사용할 수 있다 . .

파일 저장 과정 파일 저장 과정 :: 파일 열기파일 열기 (fopen) → (fopen) → 파일에 기록파일에 기록 (fprintf )→ (fprintf )→ 파일 닫기파일 닫기 (fclose)(fclose)

fopen fopen 명령어의 형식 명령어의 형식 ::

'r''r' 읽기 위해 파일 열기 (default).

'w''w'쓰기 위해 파일 열기 . 파일이 없으면 새로 만들고 , 있으면 지우고 새로 쓴다 .

'a''a'파일이 있으면 뒤에 이어서 뒤에 이어서 쓴다쓴다 . . 그 외에는 ‘그 외에는 ‘ w’w’ 와 동일와 동일

‘‘t't'이진모드이진모드 (default) (default) 대신 텍스트 대신 텍스트 모드로 파일을 연다모드로 파일을 연다 . 'rt' or . 'rt' or 'wt’'wt’

fidfid = = fopenfopen( ‘( ‘ 파일 이름’파일 이름’ , , [‘[‘ 파일 열기 형파일 열기 형식’식’ ]] ) )

확 장 자 를 포 함 한 확 장 자 를 포 함 한 파 일 이 름 을 작 은 파 일 이 름 을 작 은 따 옴 표 안 에 따 옴 표 안 에 표 기 한 다표 기 한 다 . . 파 일 파 일 이 름 에 경 로 를 이 름 에 경 로 를 포 함 할 수 있 다포 함 할 수 있 다 . . 현 재 경 로 에 대 해 현 재 경 로 에 대 해 상 대 적 이 거 나 상 대 적 이 거 나 절대적으로 설정할 절대적으로 설정할 수 있다수 있다 ..

파일이 성공적으로 열리파일이 성공적으로 열리면면 , , fidfid(( 파일 식별자파일 식별자 )) 는 는 양의 정수를 받게 되며양의 정수를 받게 되며 , , 이 이 fidfid 를 이용하여 파일 를 이용하여 파일 입출력을 수행할 수 있다입출력을 수행할 수 있다 . .

파일을 열지 못하면파일을 열지 못하면 ,, fidfid는 는 -1-1 이 되 며이 되 며 , , 에 러 에 러 메 시 지 가 메 시 지 가 messagemessage 에 에 저장된다저장된다 ..

[fid, message][fid, message] = = fopenfopen( ‘( ‘ 파일 이름’파일 이름’ , , [‘[‘ 파일 열기 형식’파일 열기 형식’ ]]

))

fopen fopen 명령어로 파일 열기명령어로 파일 열기 (1/2)(1/2)

Page 29: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 29/55

텍스트 모드로 지정한 경우텍스트 모드로 지정한 경우 ::읽기 모드 읽기 모드 ::

carriage return carriage return 뒤에 뒤에 newlinenewline 이 있으면이 있으면 , , 입력 시 입력 시 carriage returncarriage return 을 제거함을 제거함 : : \r\n \r\n →\n→\n

쓰기 모드 쓰기 모드 : :

newline newline 글자 앞에 글자 앞에 carriage returncarriage return 을 삽입한 후 기록한다 을 삽입한 후 기록한다 :: \n \n → \→ \r\r\nn

fprintffprintf 를 이용하여 파일에 기록을 하는 경우 를 이용하여 파일에 기록을 하는 경우 , , fprintffprintf 는 데이터를 문자열로 는 데이터를 문자열로 변환하여 출력하므로 이진모드와 텍스트 모드의 차이는 거의 없다 변환하여 출력하므로 이진모드와 텍스트 모드의 차이는 거의 없다 ..

fid=1(standard output)fid=1(standard output) 과 과 fid=2(standard error)fid=2(standard error) 는 시스템이 사용한다는 시스템이 사용한다 ..

>> fid=fopen('data_1.txt', 'w')>> fid=fopen('data_1.txt', 'w')fid =fid = 33>> fid=fopen('data_2.txt', 'w')>> fid=fopen('data_2.txt', 'w')fid =fid = 44>>>>

fopen fopen 명령어로 파일 열기명령어로 파일 열기 (2/2)(2/2)

Page 30: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 30/55

fprintffprintf 에 의한 파일 저장에서 유의할 점에 의한 파일 저장에서 유의할 점

생성된 파일은 현재 디렉터리에 저장된다생성된 파일은 현재 디렉터리에 저장된다 .. fprintf fprintf 명령어를 이용하여 출력을 여러 파일에 저장할 수 있다명령어를 이용하여 출력을 여러 파일에 저장할 수 있다 . . 이를 위해 먼저 이를 위해 먼저

파일들을 열고 각 파일에 서로 다른 파일들을 열고 각 파일에 서로 다른 fidfid 들들 (( 예를 들어 예를 들어 fid1, fid2, fid3 fid1, fid2, fid3 등등등등 )) 을 을 할당한 후할당한 후 , fprintf , fprintf 명령어에 특정 파일의 명령어에 특정 파일의 fidfid 를 사용하여 출력을 해당 파일에 쓴다를 사용하여 출력을 해당 파일에 쓴다 . .

fprintf fprintf 명령어의 형식 명령어의 형식 ::fprintf(fprintf( fidfid, ‘, ‘ 텍스트 텍스트 %5.2f %5.2f 텍스트’텍스트’ , , 변수변수 __이름이름 ))

fclose(fclose(fidfid))

fclose(fclose(‘all’‘all’))

status = fclose(status = fclose( fidfid))

status = fclose(status = fclose(‘all’‘all’))

파일 파일 fidfid 가 성공적으로 닫히면 가 성공적으로 닫히면 0, 0, 실패하면 실패하면 -1-1 을 을 돌려준다돌려준다 . fclose('all'). fclose('all') 은 열린 파일을 모두 닫는다은 열린 파일을 모두 닫는다 ..

fid = fopen('\matlab_work\test.txt', 'w')fid = fopen('\matlab_work\test.txt', 'w')if fid = = -1, fprintf('if fid = = -1, fprintf(' 파일을 열 수 없음파일을 열 수 없음 .\n'), end.\n'), endfprintf(fid, 'fprintf(fid, ' 출력데이터 시험중출력데이터 시험중…… \n')\n')fclose(fid)fclose(fid)

파일 기록이 모두 끝나면파일 기록이 모두 끝나면 , , fclosefclose 명령어로 파일을 닫아야 명령어로 파일을 닫아야 한다한다 ..

Page 31: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 31/55

파일 저장 예제파일 저장 예제 (1/3)(1/3)

속도 단위를 속도 단위를 mi/hmi/h 에서 에서 km/hkm/h 로 변환하고로 변환하고 , , 힘 단위를 힘 단위를 poundpound 에서 에서 NewtonNewton 으로 으로 변환하여 단위 변환표 두 개를 파일변환하여 단위 변환표 두 개를 파일 (( 확장자 확장자 **.txt).txt) 에 저장하는 프로그램을 작성하라에 저장하는 프로그램을 작성하라 ..

% % 두 개의 단위 변환표두 개의 단위 변환표 (mi/h→km/h, lb→N)(mi/h→km/h, lb→N) 를 생성하여 두 파일에 각각 저장한다를 생성하여 두 파일에 각각 저장한다 ..Vmph=10:10:100; Vkmh=Vmph*1.609; Vmph=10:10:100; Vkmh=Vmph*1.609; TBL1=[Vmph; Vkmh]TBL1=[Vmph; Vkmh]; ; % mph % mph →→ km/h km/h 변환표변환표

Flb=200:200:2000; FN=Flb*4.448; Flb=200:200:2000; FN=Flb*4.448; TBL2=[Flb; FN];TBL2=[Flb; FN]; % lb % lb →→ N N 변환표변환표

fid1fid1=fopen('=fopen('Vmph2Vkm.txtVmph2Vkm.txt','w');','w'); fid2fid2=fopen(=fopen(''Flb2FN.txtFlb2FN.txt','w');','w');fprintf(fprintf(fid1fid1,, ' ' 속도 변환표속도 변환표 \n\n'\n\n');); % % 제목과 빈 줄을 파일 제목과 빈 줄을 파일 fid1fid1 에 쓴다에 쓴다 ..fprintf(fprintf(fid1fid1,, ' mi/h km/h \n'' mi/h km/h \n');); % % 파일 파일 fid1fid1 에 두 열의 항목명을 쓴다에 두 열의 항목명을 쓴다 ..fprintf(fprintf(fid1fid1,, ' %8.2f %8.2f\n'' %8.2f %8.2f\n', , TBL1TBL1);); % % 속도 변환표를 파일 속도 변환표를 파일 fid1fid1 에 쓴다에 쓴다 ..

fprintf(fprintf(fid2fid2,, ' ' 힘 변환표힘 변환표 \n\n'\n\n'););fprintf(fprintf(fid2fid2,, ' Pounds Newtons \n'' Pounds Newtons \n'););fprintf(fprintf(fid2fid2,, '%8.2f %8.2f\n''%8.2f %8.2f\n', , TBL2TBL2);); % % 힘 변환표를 파일 힘 변환표를 파일 fid2fid2 에 쓴다에 쓴다 ..fclose(fclose(fid1fid1); fclose(); fclose(fid2fid2);); % % 파일 파일 fid1fid1 과 과 fid2fid2 를 닫는다를 닫는다 ..

Page 32: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 32/55

생성된 파일생성된 파일 (Vmph2Vkm, Flb2FN)(Vmph2Vkm, Flb2FN) 을 메모장과 워드패드을 메모장과 워드패드 , , 한글로 각각 읽은 경우한글로 각각 읽은 경우

파일 저장 예제파일 저장 예제 (2/3)(2/3)

Page 33: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 33/55

텍스트 모드로 파일을 열어서 작성한 경우텍스트 모드로 파일을 열어서 작성한 경우

fid1=fopen('Vmph2Vkm.txt','fid1=fopen('Vmph2Vkm.txt','wtwt'); ');

fid2=fopen('Flb2FN.txt','fid2=fopen('Flb2FN.txt','wtwt');');

fprintf(fprintf(fid1fid1, , ' ' 속도 변환표속도 변환표 \n\\n\

n'n'); );

……

fprintf(fprintf(fid2fid2, , ' ' 힘 변환표힘 변환표 \n\n'\n\n'););

……

fclose(fclose(‘all’‘all’););

파일 저장 예제파일 저장 예제 (3/3)(3/3)

Page 34: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 34/55

savesave 와 와 loadload 명령어명령어

savesave 와와 loadload 명 령 어 는 명 령 어 는 MATLABMATLAB 에 서 의 사 용 을 목 적 으 로 데 이 터 를 에 서 의 사 용 을 목 적 으 로 데 이 터 를 저장하거나 읽어 들일 때 사용된다저장하거나 읽어 들일 때 사용된다 . . save save 명령어는 작업공간명령어는 작업공간 (workspace)(workspace) 에 있는 변수들을 저장하는 데 사용된다에 있는 변수들을 저장하는 데 사용된다 .. loadload 명령어는 이전에 저장된 변수들을 다시 작업공간으로 불러오는 데 사용되며명령어는 이전에 저장된 변수들을 다시 작업공간으로 불러오는 데 사용되며 , ,

다른 플랫폼의 다른 플랫폼의 MATLABMATLAB 에서 저장된 작업공간도 읽어 들일 수 있다에서 저장된 작업공간도 읽어 들일 수 있다 . . 예예 ) PC) PC 의 의 MATLABMATLAB 에서 저장된 작업공간은 에서 저장된 작업공간은 MacMac 의 의 MATLABMATLAB 에서도 읽어 들일 수 있다에서도 읽어 들일 수 있다 . .

MATLAB MATLAB 외부의 응용프로그램과 데이터를 교환하는 데도 사용될 수 있다외부의 응용프로그램과 데이터를 교환하는 데도 사용될 수 있다 ..

작업공간 변수 전부를 저장하는 작업공간 변수 전부를 저장하는 save save 명령어 명령어 형식형식

save save file_namefile_name save(save(''file_namefile_name''))또는또는

위 명령어는 작업공간에 저장된 변수 전부를 파일 이름이 위 명령어는 작업공간에 저장된 변수 전부를 파일 이름이 file_name.file_name.matmat 인 인 파일에 저장하며파일에 저장하며 , , 파일 위치는 현재 디렉토리이다파일 위치는 현재 디렉토리이다 ..

matmat 파일은 파일은 22 진수 형식으로 저장되며진수 형식으로 저장되며 , , 각 변수의 이름과 유형각 변수의 이름과 유형 , , 크기크기 , , 값 값 등이 보존된다등이 보존된다 . . matmat 파일은 다른 응용프로그램에서는 읽을 수 없고 파일은 다른 응용프로그램에서는 읽을 수 없고 MATLABMATLAB에서만 읽을 수 있다에서만 읽을 수 있다 ..

Page 35: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 35/55

savesave 명령어명령어

작업공간 변수 중 일부 변수들만 저장하는 작업공간 변수 중 일부 변수들만 저장하는 save save 명령어 명령어 형식형식

작업공간 변수를 작업공간 변수를 ASCII ASCII 형식으로 저장하는 형식으로 저장하는 save save 명령어 명령어 형식형식

save save file_namefile_name var1var1 var2var2 save(save(''file_namefile_name', '', 'var1var1', '', 'var2var2''))또는또는

위 명령어는 작업공간의 두 변수 위 명령어는 작업공간의 두 변수 var1var1, , var2var2 를 파일 를 파일 file_name.matfile_name.mat 에 에 저장한다저장한다 ..

save save --ascii ascii file_namefile_name var1var1 var2var2

save(save(''file_namefile_name', '', 'var1var1', '', 'var2var2', '', '--asciiascii''))

또는또는

변수를 변수를 ASCII ASCII 형식으로 저장하려면 명령어에 옵션 형식으로 저장하려면 명령어에 옵션 –– asciiascii 를 추가한다를 추가한다 . .

이 경우 이 경우 MATLABMATLAB 이 확장자를 자동으로 추가하지 않는다는 점에 유의하라이 확장자를 자동으로 추가하지 않는다는 점에 유의하라 ..

변수를 지정하지 않으면 모든 작업공간의 변수가 저장된다변수를 지정하지 않으면 모든 작업공간의 변수가 저장된다 ..

ascii ascii 형식에서는 변수의 이름과 유형형식에서는 변수의 이름과 유형 , , 크기가 보존되지 않고 변수 이름 없이 크기가 보존되지 않고 변수 이름 없이 공백으로 분리된 문자들로 저장된다공백으로 분리된 문자들로 저장된다 ..

save save file_namefile_name var1var1 var2var2 --asciiascii

Page 36: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 36/55

savesave 명령어 사용 예명령어 사용 예

save save 명령어를 이용한 벡터변수 명령어를 이용한 벡터변수 VV 와 행렬변수 와 행렬변수 AA 의 저장 의 저장 예예 ::

작업공간의 변수들이 알파벳 작업공간의 변수들이 알파벳 순서로 저장된다는 점에 주의할 순서로 저장된다는 점에 주의할 것것 !!

AA

VV

Page 37: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 37/55

loadload 명령어명령어

save save 명령어로 저장된 명령어로 저장된 .mat .mat 파일의 모든 변수들을 불러오는파일의 모든 변수들을 불러오는 load load 명령어 명령어 형식형식

load load file_namefile_name load(load(''file_namefile_name''))또는또는

일부 변수만 불러올 일부 변수만 불러올 때때

load(load(''file_namefile_name', '', 'var1var1', '', 'var2var2''))

또는또는

load load file_namefile_name var1var1 var2var2

위 명령으로 파일의 모든 변수가 저장 당시의 형태 그대로 작업공간에 위 명령으로 파일의 모든 변수가 저장 당시의 형태 그대로 작업공간에 복원된다복원된다 . .

load load 명령어로 불러올 변수와 같은 이름의 변수가 작업공간에 이미 있다면명령어로 불러올 변수와 같은 이름의 변수가 작업공간에 이미 있다면 , , 불러온 변수가 기존 변수 값을 대체한다불러온 변수가 기존 변수 값을 대체한다 . .

작업공간의 작업공간의 변수들을 모두 변수들을 모두 제거함제거함

Page 38: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 38/55

loadload 명령어로 명령어로 ASCII ASCII 데이터 읽기데이터 읽기 (1/2)(1/2)

loadload 명령어로 명령어로 ASCII ASCII 또는 텍스트 파일에서 데이터를 작업공간으로 부를 수 또는 텍스트 파일에서 데이터를 작업공간으로 부를 수 있다있다 . .

저장된 데이터는 한 개의 저장된 데이터는 한 개의 MATLAB MATLAB 변수로 읽어올 수 있는 형태가 되어야 변수로 읽어올 수 있는 형태가 되어야 한다한다 . . 예예 ) ) 한 개의 수한 개의 수 (( 스칼라스칼라 ), ), 한 줄 또는 한 개의 열로 이루어진 수들한 줄 또는 한 개의 열로 이루어진 수들 (( 벡터벡터 ), ), 각 각 행마다 같은 개수행마다 같은 개수 의 수로 이루어진 행들의 수로 이루어진 행들 (( 행렬행렬 ))load load file_namefile_name

var = var = load(load(''file_namefile_name''))

: : 파일에서 읽은 데이터가 파일이름과 같은 이름에 변수에 할당됨파일에서 읽은 데이터가 파일이름과 같은 이름에 변수에 할당됨

파일에서 읽은 파일에서 읽은 데이터가 변수 데이터가 변수 varvar 에 에 할당됨할당됨

Page 39: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 39/55

텍스트 파일로부터 데이터를 읽어 들이기텍스트 파일로부터 데이터를 읽어 들이기

텍스트 파일 텍스트 파일 TestData.txtTestData.txt에서 데이터를 읽어 변수 에서 데이터를 읽어 변수 varvar 에 할당함에 할당함

파 일 파 일 TestData.txtTestData.txt 에 서 에 서 읽은 데이터를 파일이름과 읽은 데이터를 파일이름과 같 은 변 수 같 은 변 수 TestDataTestData 에 에 할당함할당함

loadload 명령어로 명령어로 ASCII ASCII 데이터 읽기데이터 읽기 (2/2)(2/2)

Page 40: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 40/55

데이터 가져오기데이터 가져오기 //내보내기내보내기

MATLABMATLAB 을 이용하여 실험 데이터나 다른 컴퓨터 프로그램에서 만들어진 을 이용하여 실험 데이터나 다른 컴퓨터 프로그램에서 만들어진 데이터를 분석하는 경우데이터를 분석하는 경우 , , 데이터를 데이터를 MATLABMATLAB 으로 가져와야 한다으로 가져와야 한다 . .

데이터 가져오기는 데이터 가져오기는 MATLAB MATLAB 명령어를 사용하거나 명령어를 사용하거나 가져오기 마법사가져오기 마법사 (Import (Import Wizard)Wizard) 를 이용하여 수행할 수 있다를 이용하여 수행할 수 있다 . . 불러올 데이터의 형식을 알고 있는 경우에는 명령어가 유용하다불러올 데이터의 형식을 알고 있는 경우에는 명령어가 유용하다 . . 가 져 오 기 마 법 사가 져 오 기 마 법 사 (Import Wizard)(Import Wizard) 는 데 이 터 의 형 식 을 모 르 거 나 데 이 터 는 데 이 터 의 형 식 을 모 르 거 나 데 이 터

가져오기에 적용할 명령어를 모를 때 유용하다가져오기에 적용할 명령어를 모를 때 유용하다 . .

xlsread xlsread 명령을 이용하여 명령을 이용하여 Excel Excel 파일로부터 데이터 가져오기파일로부터 데이터 가져오기

문자열로 쓰여진 문자열로 쓰여진 filenamefilename 은 은 Excel Excel 파일 이름이며파일 이름이며 , , 파일 주소는 현재 주소 또는 파일 주소는 현재 주소 또는 MATLAB MATLAB 탐색경로에 등록되어 있어야 함탐색경로에 등록되어 있어야 함 . . 확장자 확장자 xlsxls 는 생략 가능는 생략 가능 ..

Excel Excel 파일이 여러 시트를 가진 경우파일이 여러 시트를 가진 경우 , sheet_name, sheet_name 으로 지정된 시트를 부르며으로 지정된 시트를 부르며 , , 지정되지 않은 경우 첫 번째 시트부터 시작함지정되지 않은 경우 첫 번째 시트부터 시작함 . .

range : range : 엑셀의 범위 기호를 사용하여 일부 데이터만 불러올 수 있다엑셀의 범위 기호를 사용하여 일부 데이터만 불러올 수 있다 . . 예예 ) ) 'B2:C4''B2:C4'

variable = xlsread('filename', ['sheet_name'], ['range'])variable = xlsread('filename', ['sheet_name'], ['range'])

Page 41: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 41/55

xlsreadxlsread 에 의한 데이터 가져오기에 의한 데이터 가져오기

>> A = xlsread('data.xls')>> A = xlsread('data.xls')A =A = 1 6 21 26 311 6 21 26 31 2 7 22 27 322 7 22 27 32 3 8 23 28 333 8 23 28 33 4 9 24 29 344 9 24 29 34 5 10 25 30 355 10 25 30 35>> A=xlsread('data', 'B2:C4')>> A=xlsread('data', 'B2:C4')A =A = 7 227 22 8 238 23 9 249 24>> A=xlsread('data', 'Sheet2', 'A1:B4')>> A=xlsread('data', 'Sheet2', 'A1:B4')A =A = 100 600100 600 200 700200 700 300 800300 800 400 900400 900

Page 42: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 42/55

xlswritexlswrite 에 의한 데이터 내보내기에 의한 데이터 내보내기

xlswrite xlswrite 명령을 이용하여 명령을 이용하여 MATLABMATLAB 에서 엑셀로 데이터를 내보낼 수 있다에서 엑셀로 데이터를 내보낼 수 있다 ..

문자열 문자열 'filename''filename' 은 은 MATLAB MATLAB 데이터가 보내질 엑셀파일의 이름임데이터가 보내질 엑셀파일의 이름임 . . 파일이 파일이 존재하지 않으면존재하지 않으면 , , 먼저 파일부터 만들어야 한다먼저 파일부터 만들어야 한다 ..

variable_namevariable_name 은 내보내기할 데이터를 가진 은 내보내기할 데이터를 가진 MATLAB MATLAB 변수이다변수이다 .. 'sheet_name''sheet_name' 과과 'range''range' 에 의해 데이터를 특정 시트와 범위의 셀로 보낼 수 에 의해 데이터를 특정 시트와 범위의 셀로 보낼 수

있다있다 ..

예예 ) ) xlswrite('test', [13.2 -7.42 -26 3.9; 10 29.4 -51.3 91.6]),xlswrite('test', [13.2 -7.42 -26 3.9; 10 29.4 -51.3 91.6]), xlswrite('data', [13.2 -7.42 -26 3.9; 10 29.4 -51.3 91.6])xlswrite('data', [13.2 -7.42 -26 3.9; 10 29.4 -51.3 91.6])

xlswrite('filename', variable_name, ['sheet_name'], ['range']xlswrite('filename', variable_name, ['sheet_name'], ['range']))

Page 43: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 43/55

MATLABMATLAB 의 의 Import WizardImport Wizard 기능을 사용하면기능을 사용하면 , , 데이터 형식을 지정하거나 데이터 형식을 지정하거나 알 필요 없이 편하게 데이터를 알 필요 없이 편하게 데이터를 MATLABMATLAB 으로 가져올 수 있다으로 가져올 수 있다 . . Import Import WizardWizard 는 명령창의 는 명령창의 FileFile 메뉴에서 메뉴에서 Import Data… Import Data… 로 실행하며로 실행하며 , , 명령어 명령어 창에서 창에서 uiimportuiimport 명령어로 실행시킬 수도 있다명령어로 실행시킬 수도 있다 ..

WizardWizard 가 인식하는 모든 데이터 파일 목록을 모두 보여주므로 불러들일 가 인식하는 모든 데이터 파일 목록을 모두 보여주므로 불러들일 파일을 선택하면 된다파일을 선택하면 된다 . .

Import WizardImport Wizard 에 의한 데이터 에 의한 데이터 가져오기가져오기 (1/3)(1/3)

Page 44: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 44/55

파일을 선택하면파일을 선택하면 , , 데이터가 옳은지 확인할 수 있도록 데이터를 미리 데이터가 옳은지 확인할 수 있도록 데이터를 미리 보여주는 창이 나타나며보여주는 창이 나타나며 , , 여기서 데이터 구분에 사용된 구분자여기서 데이터 구분에 사용된 구분자 (( 콤마콤마 , , 공공백백 , , 세미콜른 등세미콜른 등 )) 를 선택하여 원하는 방법으로 데이터를 읽어들일 수 를 선택하여 원하는 방법으로 데이터를 읽어들일 수 있도록 한 다음있도록 한 다음 , Next , Next 버튼을 누른다버튼을 누른다 ..

Import WizardImport Wizard 에 의한 데이터 에 의한 데이터 가져오기가져오기 (3/3)(3/3)

Page 45: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 45/55

다음 화면에서 다음 화면에서 MATLABMATLAB 에 의해 생성될 변수의 이름과 크기를 보여주며에 의해 생성될 변수의 이름과 크기를 보여주며 , , 여기서 여기서 Finish Finish 버튼을 클릭하면 데이터가 버튼을 클릭하면 데이터가 MATLABMATLAB 으로 읽혀진다으로 읽혀진다 . . 명령어 명령어 창에서 변수명 창에서 변수명 Ex1Ex1 을 입력하면을 입력하면 , , 데이터를 가져왔음을 확인할 수 있다데이터를 가져왔음을 확인할 수 있다 ..

Import WizardImport Wizard 에 의한 데이터 에 의한 데이터 가져오기가져오기 (3/3)(3/3)

Page 46: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 46/55

uiimport uiimport 명령어에 의한 명령어에 의한 Import Import WizardWizard

명령어 창에서 명령어 창에서 >> uiimport>> uiimport 를 수행하고를 수행하고 Import WizardImport Wizard 에서 데이터파일을 에서 데이터파일을 선택한 후선택한 후 , , 데이터 구분에 사용한 데이터 구분에 사용한 SeparatorSeparator 를 선택한다를 선택한다 . . 이후는 앞과 동일하다이후는 앞과 동일하다 ..

Page 47: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 47/55

예제 예제 4.1 Silo4.1 Silo 의 높이와 표면적의 높이와 표면적 (1/2)(1/2)

높이가 높이가 HH 이고 반지름이 이고 반지름이 rr 인 원통형 인 원통형 silosilo 가 반지름 가 반지름 RR 의 구형 의 구형 덮개를 갖고 있다덮개를 갖고 있다 . a) . a) 주어진주어진 rr 과 과 RR, , 부피 부피 VV 의 값에 대해 의 값에 대해 원통 원통 높이 높이 HH 와 사일로의 표면적을 계산하는 프로그램을 작성하라와 사일로의 표면적을 계산하는 프로그램을 작성하라 .. b) b) 이 이 프로그램을 이용하여 프로그램을 이용하여 rr=30 ft, =30 ft, RR=45 ft, =45 ft, VV=120,000 ft=120,000 ft33 인 인 silosilo 의 높이와 의 높이와 표면적을 계산하라표면적을 계산하라 . . rr 과 과 RR, , VV 의 값은 명령어 창에서 입력한다의 값은 명령어 창에서 입력한다 ..

SiloSilo 의 전체 부피 의 전체 부피 = = 원통 부분의 부피 원통 부분의 부피 + + 구형 덮개 구형 덮개 부피부피

원통 부분의 부피 원통 부분의 부피 ::

구형 덮개의 부피 구형 덮개의 부피 ::

2cyl HV r

213

3

where 1 cos , sin =

cap h R h

rh R

R

V

원통 부 분 의 높원통 부 분 의 높이 이 ::

2

cap

r

VVH

SiloSilo 의 표면적 의 표면적 ::

2 2S rH Rh

Page 48: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 48/55

스크립트 파일 스크립트 파일 Silo.mSilo.m

명령어 창에서의 실행명령어 창에서의 실행

theta=asin(r/R) theta=asin(r/R) % theta% theta 를 계산함 를 계산함h=R*(1-cos(theta)); h=R*(1-cos(theta)); % h% h 를 계산함 를 계산함Vcap=pi*h^2*(3*R-h)/3; Vcap=pi*h^2*(3*R-h)/3; % % 구형 덮개의 부피를 계 구형 덮개의 부피를 계

산함산함H=(V-Vcap)/(pi*r^2); H=(V-Vcap)/(pi*r^2); % H% H 를 계산함 를 계산함S=2*pi*(r*H+R*h); S=2*pi*(r*H+R*h); % % 표면적 표면적 SS 를 계산함 를 계산함fprintf('fprintf(' 높이 높이 HH 는 는 %f ft%f ft 이다이다 .', H).', H)

fprintf('\nSilofprintf('\nSilo 의 표면적은 의 표면적은 %f ft^2 %f ft^2 이다이다 .', S).', S)

>> r=30; R=45; V=200000;>> r=30; R=45; V=200000;

>> silo>> silo

높이 높이 HH 는 는 64.727400 ft64.727400 ft 이다이다 ..

SiloSilo 의 표면적은 의 표면적은 15440.777753 ft^2 15440.777753 ft^2 이다이다 ..

예제 예제 4.1 Silo4.1 Silo 의 높이와 표면적의 높이와 표면적 (2/2)(2/2)

Page 49: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 49/55

복합면적의 중심 좌표를 계산하는 프로그램을 스크립트 파일로 작성하라복합면적의 중심 좌표를 계산하는 프로그램을 스크립트 파일로 작성하라 .. 면적을 부분면적들로 나누고 각 부분면적의 중심 좌표와 해당 면적을 면적을 부분면적들로 나누고 각 부분면적의 중심 좌표와 해당 면적을 준비한 후준비한 후 , , 프로그램이 실행될 때 중심 좌표와 해당 면적 등 세 값을 프로그램이 실행될 때 중심 좌표와 해당 면적 등 세 값을 부분면적 개수만큼 행렬의 각 행으로 입력하도록 작성하라부분면적 개수만큼 행렬의 각 행으로 입력하도록 작성하라 . .

구멍은 음의 면적을 갖도록 하고구멍은 음의 면적을 갖도록 하고 , , 복합면적의 중심 좌표를 출력한다복합면적의 중심 좌표를 출력한다 . . 이 프로그램으로 우측 그림의 면적 중심을 계산하라이 프로그램으로 우측 그림의 면적 중심을 계산하라 ..

단위단위 : mm: mm

예제 예제 4.2 4.2 복합면적의 중심 계산복합면적의 중심 계산 (1/4)(1/4)

Page 50: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 50/55

예제 예제 4.2 4.2 복합면적의 중심 계산복합면적의 중심 계산 (2/4)(2/4)

풀이풀이 면적을 아래 그림과 같이 면적을 아래 그림과 같이 66 개의 부분면적들로 나누면개의 부분면적들로 나누면 , , 각 부분면적의 중심의 각 부분면적의 중심의

위치와 좌표는 아래 그림과 같다위치와 좌표는 아래 그림과 같다 ..

총 면적의 중심 좌표는 다음 식으로 구할 수 있다 총 면적의 중심 좌표는 다음 식으로 구할 수 있다 :: 1 1

1 1

,

n n

i i i ii in n

i ii i

A x A yX Y

A A

단위단위 : : 좌표는 좌표는 mm, mm, 면적은 면적은 mmmm22

Page 51: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 51/55

clear C xs ys Asclear C xs ys As

C=input(C=input('' 행마다 원소가 세 개인 행렬을 입력하라행마다 원소가 세 개인 행렬을 입력하라 .\n.\n 각 행에 부분면적의 각 행에 부분면적의 중심좌표 중심좌표 x, yx, y 와 면적을 입력한다와 면적을 입력한다 .\n'.\n'););

xs=C(:,1)'; xs=C(:,1)'; % % 각 부분면적의 각 부분면적의 x x 좌표를 갖는 행벡터를 생성함좌표를 갖는 행벡터를 생성함 (C(C 의 첫 번째 의 첫 번째 열열 ))

ys=C(:,2)'; ys=C(:,2)'; % % 각 부분면적의 각 부분면적의 y y 좌표를 갖는 행벡터를 생성함좌표를 갖는 행벡터를 생성함 (C(C 의 두 번째 의 두 번째 열열 ))

As=C(:,3)'; As=C(:,3)'; % % 각 부분면적의 면적을 갖는 행벡터를 생성함각 부분면적의 면적을 갖는 행벡터를 생성함 (C(C 의 세 번째 의 세 번째 열열 ))

A=sum(As); A=sum(As); % % 총 면적을 계산함총 면적을 계산함

x=sum(As.*xs)/A; x=sum(As.*xs)/A; % % 복합면적의 중심 좌표를 계산함복합면적의 중심 좌표를 계산함

y=sum(As.*ys)/A;y=sum(As.*ys)/A;

fprintf('fprintf(' 면적중심의 좌표는 면적중심의 좌표는 (%f, %f)(%f, %f) 이다이다 .‘, x,y).‘, x,y)

프로그램 스크립트 파일 프로그램 스크립트 파일 Centroid.mCentroid.m

예제 예제 4.2 4.2 복합면적의 중심 계산복합면적의 중심 계산 (3/4)(3/4)

Page 52: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 52/55

명령어 창에서의 실행명령어 창에서의 실행

>> Centroid>> Centroid

행마다 원소가 세 개인 행렬을 입력하라행마다 원소가 세 개인 행렬을 입력하라 ..

각 행 에 부 분 면 적 의 중심좌표 각 행 에 부 분 면 적 의 중심좌표 x, yx, y 와 면 적 을 와 면 적 을 입력한다입력한다 ..

[100 100 200*200[100 100 200*200

60-120/pi 200+120/pi pi*60^2/460-120/pi 200+120/pi pi*60^2/4

60+140/3 220 140*60/260+140/3 220 140*60/2

100 100/pi -pi*50^2/2100 100/pi -pi*50^2/2

150 95 -40*150150 95 -40*150

105 145 -50*50]105 145 -50*50]

면적중심의 좌표는 면적중심의 좌표는 (85.387547, 131.211809)(85.387547, 131.211809) 이다이다 ..

행렬 행렬 CC 에 대 한 데 이 터 를 에 대 한 데 이 터 를 입 력 한 다입 력 한 다 . . 각 행 은 각 행 은 부분면적의 부분면적의 x, y, x, y, 면적 등 세 면적 등 세 원소를 갖는다원소를 갖는다 ..

예제 예제 4.2 4.2 복합면적의 중심 계산복합면적의 중심 계산 (4/4)(4/4)

Page 53: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 53/55

예제 예제 4.3 4.3 전압분배기전압분배기 (Voltage (Voltage divider)divider) (1/3)(1/3)

저항기들의 직렬 회로에서 각 저항기의 양단 전압과 소모 전력을 구하는 저항기들의 직렬 회로에서 각 저항기의 양단 전압과 소모 전력을 구하는 프로그램을 작성하라프로그램을 작성하라 .. 저항기의 양단 전압과 소모 전력은 다음 식으로 저항기의 양단 전압과 소모 전력은 다음 식으로 주어진다주어진다 ::

22

, n nn s n s

eq eq

R RV V P V

R R

프로그램이 실행되면 사용자에게 전원 전압프로그램이 실행되면 사용자에게 전원 전압 VVss 의 입력과 벡터로 표시된 의 입력과 벡터로 표시된 저항들의 입력을 요구하고 계산 결과를 표로 출력하고 회로의 전류와 총 전력을 저항들의 입력을 요구하고 계산 결과를 표로 출력하고 회로의 전류와 총 전력을 표시하라표시하라 .. 표의 첫째 열은 저항기의 저항표의 첫째 열은 저항기의 저항 , , 둘째 열은 각 저항기 양단의 전압둘째 열은 각 저항기 양단의 전압 , , 셋째 열은 각 저항기에서 소모되는 전력으로 한다셋째 열은 각 저항기에서 소모되는 전력으로 한다 ..

R1=20 Ω, R2=14 Ω, R3=12

Ω,

R4=18 Ω, R5=15 Ω, R7=10

Ω,

저항 전압 전력저항 전압 전력 (ohms) (ohms) (Volts) (Volts) (Watts)(Watts)

20.0000 4.9485 1.224420.0000 4.9485 1.2244 14.0000 3.4639 0.857114.0000 3.4639 0.8571 12.0000 2.9691 0.734612.0000 2.9691 0.7346 18.0000 4.4536 1.101918.0000 4.4536 1.1019 15.0000 3.7113 0.918315.0000 3.7113 0.9183 10.0000 2.4742 0.612210.0000 2.4742 0.6122회로의 전류는 회로의 전류는 0.247423 Amp0.247423 Amp 이다이다 ..회로에서 소모되는 총 전력은 회로에서 소모되는 총 전력은 5.938144 Watt5.938144 Watt 이다이다 ..

<< 화면 출력 예화면 출력 예 >>

Page 54: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 54/55

% % 저항기들이 직렬 연결된 회로에서 각 저항기 양단의 전압과 소모전력을 저항기들이 직렬 연결된 회로에서 각 저항기 양단의 전압과 소모전력을 계산한다계산한다 ..

vs=input(vs=input(''전원 전압을 입력하시오전원 전압을 입력하시오 (V) : ‘(V) : ‘););

Rn=input(Rn=input('' 저항기들의 저항을 행벡터의 원소 형태로 입력하시오 저항기들의 저항을 행벡터의 원소 형태로 입력하시오 : \n': \n'););

Req=sum(Rn); Req=sum(Rn); % % 등가저항을 계산함등가저항을 계산함vn=Rn*vs/Req;vn=Rn*vs/Req; Pn=Rn*vs^2/Req^2;Pn=Rn*vs^2/Req^2; % % 각 저항기의 양단 전압과 소모전력 계산각 저항기의 양단 전압과 소모전력 계산i=vs/Req; i=vs/Req; % % 회로의 전류를 계산함회로의 전류를 계산함Ptotal = vs*i;Ptotal = vs*i; % % 회로의 총 전력을 계산함회로의 총 전력을 계산함Table = [Rn', vn‘, Pn'];Table = [Rn', vn‘, Pn']; % Rn, vn, Pn % Rn, vn, Pn 을 열로 갖는 변수 을 열로 갖는 변수 tabletable 을 생성함을 생성함disp(‘ ’) disp(‘ ’) % % 빈줄 표시빈줄 표시disp(disp(' ' 저항 전압 전력‘저항 전압 전력‘ ))

disp(disp(' (ohms) (Volts) (Watts)'' (ohms) (Volts) (Watts)'))

disp(disp(‘ ’‘ ’), disp(Table), disp(‘ ’)), disp(Table), disp(‘ ’)

fprintf(fprintf(''회로의 전류는 회로의 전류는 %f Amp%f Amp 이다이다 .‘.‘, i), i)

fprintf(fprintf('\n'\n회로에서 소모되는 총 전력은 회로에서 소모되는 총 전력은 %f Watt%f Watt 이다이다 .\n‘.\n‘, Ptotal), Ptotal)

프 로 그 램 스 크 립 트 파 일 프 로 그 램 스 크 립 트 파 일 VoltageDivider.mVoltageDivider.m

예제 예제 4.3 4.3 전압분배기전압분배기 (2/3)(2/3)

Page 55: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 55/55

명령어 창에서의 실행명령어 창에서의 실행>> VoltageDivider>> VoltageDivider

전원 전압을 입력하시오전원 전압을 입력하시오 (V)(V) : 24 : 24

저항기들의 저항을 행벡터의 원소 형태로 입력하시오 저항기들의 저항을 행벡터의 원소 형태로 입력하시오 ::

[20 14 12 18 8 15 10][20 14 12 18 8 15 10]

저항 전압 전력저항 전압 전력 (ohms) (Volts) (Watts)(ohms) (Volts) (Watts)

20.0000 4.9485 1.224420.0000 4.9485 1.2244

14.0000 3.4639 0.857114.0000 3.4639 0.8571

12.0000 2.9691 0.734612.0000 2.9691 0.7346

18.0000 4.4536 1.101918.0000 4.4536 1.1019

15.0000 3.7113 0.918315.0000 3.7113 0.9183

10.0000 2.4742 0.612210.0000 2.4742 0.6122

회로의 전류는 회로의 전류는 0.247423 Amp0.247423 Amp 이다이다 ..

회로에서 소모되는 총 전력은 회로에서 소모되는 총 전력은 5.938144 Watt5.938144 Watt 이다이다 ..

벡 터 로 입 력 된 벡 터 로 입 력 된 저항값들저항값들

예제 예제 4.3 4.3 전압분배기전압분배기 (3/3)(3/3)

Page 56: MATLAB 개요와 응용 4 장 스크립트 파일의 사용과 데이터 처리

MATLAB HCH

4 장 스크립트 파일 56/55

44 장 강의록 끝장 강의록 끝

4 장 끝