슬라이드 1

Similar documents
예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - chap05-제어문.pptx

Tcl의 문법

MATLAB for C/C++ Programmers

OCW_C언어 기초

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

슬라이드 1

chap 5: Trees

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint Presentation

Microsoft PowerPoint - lect08.ppt [호환 모드]

Microsoft PowerPoint - lect08

PowerPoint Presentation

PowerPoint 프레젠테이션

02장.배열과 클래스

Microsoft PowerPoint - C++ 5 .pptx

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

Microsoft PowerPoint - chap04-연산자.pptx

설계란 무엇인가?

03장.스택.key

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

MATLAB

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Java ...

PowerPoint 프레젠테이션

Microsoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx

Microsoft PowerPoint - C프로그래밍-chap15.ppt [호환 모드]

chap x: G입력

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Infinity(∞) Strategy

Chapter 4. LISTS

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - e pptx

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - [2009] 02.pptx

슬라이드 1

PowerPoint 프레젠테이션

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - chap10-함수의활용.pptx

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

C 프로그래밊 개요

< 고급 C 프로그래밍및실습 > 11 장구조체실습문제 문제에대한안내 - 특별한언급이없으면문제의조건에맞지않는입력은입력되지않는다고가정하라. - 특별한언급이없으면, 각줄의맨앞과맨뒤에는공백을출력하지않는다. - 출력예시에서 는각줄의맨앞과맨뒤에출력되는공백을의미한다. - 입출력예시

PowerPoint Presentation

설계란 무엇인가?

Lab 3. 실습문제 (Single linked list)_해답.hwp

PowerPoint Template

11장 포인터

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

17장 클래스와 메소드

컴파일러

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Microsoft PowerPoint Predicates and Quantifiers.ppt

untitled

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - chap06-5 [호환 모드]

06장.리스트

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

PHPoC vs PHP > 개요 개요 PHPoC 는솔내시스템 이자체개발한프로그래밍언어입니다. 당사의모든 PHPoC 제품들의펌웨어에는 PHPoC 인터프리터가내장되어있습니다. PHPoC 는범용스크립트언어인 PHP 를기반으로제작되었습니다. PHPoC 는매우간단하여 C 언어등

PowerPoint 프레젠테이션

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

PowerPoint 프레젠테이션

UI TASK & KEY EVENT

4장.문장

쉽게 풀어쓴 C 프로그래밍

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Visual Basic 반복문

윈도우즈프로그래밍(1)

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

슬라이드 1

Microsoft PowerPoint - chap03-변수와데이터형.pptx

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

K&R2 Reference Manual 번역본

MySQL-.. 1

Microsoft PowerPoint - chap-05.pptx

쉽게 풀어쓴 C 프로그래밍

MATLAB for C/C++ Programmers

금오공대 컴퓨터공학전공 강의자료

쉽게 배우는 알고리즘 강의노트

<4D F736F F F696E74202D204D41544C4142B0ADC0C7B7CF28B9E8C6F7BFEB295F3031C0E55FBDC3C0DBC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - lect03.ppt [호환 모드]

<C6F7C6AEB6F5B1B3C0E72E687770>

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

MATLAB for C/C++ Programmers

JAVA PROGRAMMING 실습 02. 표준 입출력

Transcription:

제 2 장 프로그램작성기법

>= 크거나같은 관계연산자 관계및논리연산자 MATLAB 논리데이터형식 : 1 은참, 0 은거짓 논리들은관계및논리연산자 / 함수들, 그리고 true 및 false 함수에의하여생성 : >> a = true a = 1 >> b = false b = 0 >> c = 1 c = 1 MATLAB 의관계연산자 : 연산자 의미 == 대등 ~= 같지않음 < 작은 > 큰 <= 작거나같은

논리연산자 스칼라사이의비교 : 관계가참이면논리 1 이, 거짓이면논리 0 이생성 : >> 2 > 3 0 (OR) 연산자의예 : >> 2 3 1 행렬 - 행렬비교 : 해당되는원소쌍들이비교 행렬 - 스칼라비교 : 스칼라가각행렬원소와비교 >> [2 3] < [3 2] 1 0 >> x = -2:2; x >= 0 0 0 1 1 1 >> A = [1 2; 3 4]; B = 2*ones(2); >> A == B 0 1 0 0 >> A > 2 0 0 1 1

x(x >= 0): x 의 0 이아닌원소들만으로구성되는벡터를제시 x = -2:2 이라면 >> x = -2:2; >> x(x >= 0) 0 1 2 논리배열을사용하여다른배열로부터원소들을선택하는경우 : 두배열의크기가같아야 논리배열에서각각의 1 에해당하는원소들이선택되는반면에각각의 0 에해당되는원소들은 선택되지않는다. 배열 A 와 B 의크기가같으면서원소들이서로동일한지를알아보려면 isequal(a,b) 를이용 : >> A = [1 2; 3 4]; B = 2*ones(2); >> isequal(a,b) 0 논리함수 isinf(a): 크기가 A 와같으며 A 의원소가 +, 혹은 - inf 인위치에참 (1) 을포함하고그 렇지않은위치에는거짓 (0) 을포함하는논리배열을반환 >> A = [1 inf; -inf NaN]; >> isinf(a) 0 1 1 0

변수의값에 NaN( 부정치 ), inf( 무한대 ), [ ]( 빈배열, 혹은빈행렬 ) 를인정 이름이 is 로시작되는 MATLAB 내장논리함수 : 논리 is* 함수 기능 ischar char 배열 ( 문자열 ) 인지를테스트 isempty 빈배열인지를테스트 isequal 배열들이서로동일한지를테스트 isfinite 유한배열원소들을검지 isfloat 부동소수점배열 (single, 혹은 double) 인지를테스트 isinf 무한배열원소들을검지 isinteger 정수배열인지를테스트 islogical 논리배열인지를테스트 isnan NaN 배열원소들을검지 isnumeric 수치배열 ( 정수, 혹은부동소수점 ) 인지를테스트 isreal 실수배열인지를테스트 isscalar 스칼라배열인지를테스트 issorted 정렬된벡터인지를테스트 isvector 벡터배열인지를테스트

A 가허수부분을갖지않는다면 isreal(a) 은참 A 가허수부를갖는지의여부를결정 : >> a = 1; >> b = complex(1,0); >> c = 1+0i; >> [a b c] 1 1 1 >> [isreal(a), isreal(b), isreal(c)] 1 0 1 논리연산자 : 연산자 & && 의미 논리 and 단락 ( 短絡 ) 논리 and 논리 or 단락 ( 短絡 ) 논리 or ~ 논리 not xor all any 배타적논리 or 벡터의모든원소들이 0 이아니면참 벡터의임의의원소가 0 이아니면참

&, 및 ~ 연산자 : 인수들가운데하나가행렬이면논리 0 과논리 1 들의행렬을생성 all 함수를벡터에적용 : 그벡터의모든원소들이 0 이아니면 1 을, 그렇지않으면 0 을반환 any 함수 : 모든 을 임의의 로바꾸어 all 함수와동일하게정의 >> x = [-1 1 1]; y = [1 2-3]; >> x>0 & y>0 0 1 0 >> x>0 y>0 1 1 1 >> xor(x>0,y>0) 1 0 1 >> any(x>0) 1 >> all(x>0) 0 xor: xor(a,b) 와같이함수로호출

&& 와 : 스칼라표현에대해서만작용, & 이나 보다우선적으로사용 >> any(x>0) && any(y>0) 1 >> x>0 && y>0??? Operands to the and && operators must be convertible to logical scalar values. expr1 && expr2 에서 expr1 이거짓이면 expr2 는평가되지않는다. expr1 expr2 에서 expr1 이참이면 expr2 는평가되지않는다.

산술, 관계및논리연산자들의우선순위 : 우선순위 연산자 1( 가장높음 ) 괄호 () 2 전치 (. ), 거듭제곱 (.^), 켤 fp 복소수전치 ('), 행렬의거듭제곱 (^) 3 단항 +, 단항 -, 논리부정 (~) 4 곱 (.*), 오른쪽나누기 (./), 왼쪽나누기 (.\), 행렬곱 (*), 행렬오른쪽나누기 (/), 행렬왼쪽나누기 (\) 5 더하기 (+), 빼기 (-) 6 콜론연산자 (:) 7 작은 (<), 같거나작은 (<=), 큰 (>), 같거나큰 (>=), 동일한 (==), 같지않은 (~=) 8 논리 and (&) 9 논리 or ( ) 10 논리단락 and (&&) 11( 가장낮음 ) 논리단락 or ( )

행렬의경우 all 로부터 all 이각열에적용된결과를포함하는행벡터가생성 all(all(a==b)): 행렬 A 와 B 가동일한것인지의여부를시험하는하나의방법 any(any(a==b)): A 와 B 가임의의동일한원소들을갖는경우 1 의값을가지며그렇지않으면 0 find: 벡터의 0 이아닌원소들에해당하는지수들을반환 >> x = [-3 1 0 -inf 0]; >> f = find(x) f = 1 2 4 find 의결과는다시그벡터의원소들을추출하는데에사용가능 : >> x(f) -3 1 -Inf find 를이용한유한원소의획득 : >> x = [-3 1 0 -inf 0]; >> x(find(isfinite(x))) -3 1 0 0 음의성분들을 0 으로대체 : >> x(find(x < 0)) = 0 x = 0 1 0 0 0

find 를이용하여 B 의해당되는위치의원소들보다작은 A 의원소들에 0 을설정하는방법 : >> A = [4 2 16; 12 4 3], B = [12 3 1; 10-1 7] A = 4 2 16 12 4 3 B = 12 3 1 10-1 7 >> f = find(a<b) f = 1 3 6 >> A(f) = 0 A = 0 0 16 12 4 0

4 가지흐름제어구조 : if, for, while, switch if 문 프로그램흐름의제어 가장간단한형태 : if ( 조건 ) ( 문장 ) end if 문장다음에다른문장이더이어지면콤마를이용하여 if 를그다음문장과분리 : if x > 0, x = sqrt(x); end ( 조건 ) 이거짓일경우에만수행되는문장 : else 다음에위치 v = exp(1); if 2^v > v^2 disp('2^v is bigger') else disp('v^2 is bigger') end

elseif 를이용하여하나, 혹은그이상의조건들을추가 (else 와 if 사이에빈칸이없어야한다 ): if isnan(x) disp('not a Number') elseif isinf(x) disp('plus or minus infinity') else disp('a floating point number') end for 루프 간략하고빠른코드의작성에관심이있는프로그래머 : 가능한한 for 루프의사용을회피 for ( 변수 ) = ( 표현 ) ( 문장 ) end 대괄호를사용한 ( 표현 ) 의정의 : >> for x = [pi/6 pi/4 pi/3], disp([x sin(x)]), end 0.5236 0.5000 0.7854 0.7071 1.0472 0.8660

(i,j) 원소가일때 i/j 인 5 x 5 행렬 A 를생성 : n = 5; A = eye(n); for j = 2:n for i = 1:j-1 A(i,j) = i/j; A(j,i) = i/j; end end continue 는 for 루프의나머지문장들을그냥지나치게하여루프의수행을즉시다음번반복단계로이동 5 에서 10 까지의정수들만을나타내어주는예 : for i = 1:10 if i < 5, continue, end disp(i) end

while 루프 형태 : while ( 표현 ) ( 문장 ) end ( 표현 ) 이참인한 ( 문장 ) 이수행 0 이아닌가장작은부동소수점수를근사하는보기 : x = 1; while 1 xmin = x; x = x/2; if x == 0, break, end end xmin xmin = 4.9407e-324 break 로종료 : 프로그램의제어를해당되는 end 다음의첫번째문장으로전달 while 1,..., end 와같은무한루프의형성 : 루프의처음부분에수행중단테스트를두는것이 편리하지않을경우에유용 break 는 for 루프의중단에도사용가능 중첩된루프에서 break 는바로윗단계의루프로옮겨가도록하여준다.

while 을사용한무한수열의합 : % infsum.m : 무한수열의합 n = 1; oldsum = -1; newsum = 0; while newsum > oldsum oldsum = newsum; newsum = newsum + n^(-4); n = n + 1; end newsum 이파일의수행결과 : >> infsum newsum = 1.0823

switch 문 switch 제어구조 : switch ( 표현 ) 다음에일련의 case ( 표현 ) ( 문장 ) 들이이어지는것으로구성 경우에따라 otherwise ( 문장 ) 과 end 로종료 switch 의 ( 표현 ) 이평가되고그결과와부합되는첫번째 case ( 표현 ) 다음의 ( 문장 ) 이수행 case 들가운데어느것도평가결과와부합되지않으면 otherwise 다음의 ( 문장 ) 이수행 입력에대하여세가지경우들을구별하는예 : function y = count(x) switch x case 1 y = 'one' case 2 y = 'two' otherwise y = 'many' end 세가지 p 값에대하여벡터 x 의 p- 놈 (norm)( 즉 norm(x,p)) 을계산하는예 : switch p case 1 y = sum(abs(x)); case 2 y = sqrt(x'*x); case inf y = max(abs(x)); otherwise error('p must be 1, 2 or inf.') end

case 다음의 ( 표현 ) 은괄호로싸인값들의목록 : switch 의 ( 표현 ) 은목록의임의의값과대조 : x = input('enter a real number: '); switch x case {inf,-inf} disp('plus or minus infinity') case 0 disp('zero') otherwise disp('nonzero and finite') End case 그룹표현이일단부합되고문장이수행되면흐름의제어는 switch 후의첫번째문장으 로이동 - break 문장의사용은불필요

셀 셀과구조체 배열의배열 로서셀배열의원소들은각기다른데이터형식과다른크기를가질수있다. 명령어 cell 은빈셀배열을생성 셀배열의생성 : 소괄호나중괄호를이용 >> A(1,1) = {' 박영수 '}; A(1,2) = {2008011254}; >> A(2,1) = {' 김철수 '}; A(2,2) = {2008010231}; >> A A = ' 박영수 ' [2.0080e+009] ' 김철수 ' [2.0080e+009] >> A{1,1} = {' 박영수 '}; A{1,2} = {2008011254}; >> A{2,1} = {' 김철수 '}; A{2,2} = {2008010231}; >> A A = {1x1 cell} {1x1 cell} {1x1 cell} {1x1 cell}

celldisp 함수 : 셀배열의내용을확인 >> celldisp(a) A{1,1}{1} = 박영수 A{2,1}{1} = 김철수 A{1,2}{1} = 2.0080e+009 A{2,2}{1} = 2.0080e+009 cellplot 함수 : 셀배열을그림으로보여주는함수 >> cellplot(a)

2 x 2 셀배열을설정하는보기 : >> C = {1:3, pi; magic(2), 'A string'} C = [1x3 double] [ 3.1416] [2x2 double] 'A string' 셀배열원소의획득 : >> C{2,1} 1 3 4 2 >> C{2,1}(1,2) 3 구조체 C 와같은프로그램언어들에서의구조체 (structure) 와유사 배열의원소들에이름을붙일수있으며원소들은각기다른형태와크기를가질수있다. 구조체를만드는한가지방법 : struct 를사용 >> sa = struct('data', [1 4 9 16 25], 'description', 'perfect squares') sa = data: [1 4 9 16 25] description: 'perfect squares'

필드 에접속 : sa.data 와같이배열의이름과필드의이름을타이프하고이들사이를마침표로구분 >> sa = struct; >> sa.data = [1 4 9 16 25]; >> sa.description = 'perfect squares' sa = data: [1 4 9 16 25] description: 'perfect squares' 구조체의배열 : 데이터베이스등을관리할때편리 보기 : name", 'ID", "mark" 와같은 3 개의필드를가지며원소가 30 개인 student 구조체배열의생성 >> student(30) = struct('name',' 이영수 ','ID',2008012316','mark',[87 98 76 90]); >> student(2) name: [] ID: [] mark: [] >> student(5).name = ' 김철수 ' student = 1x30 struct array with fields: name ID mark

cell2struct 와 struct2cell: 셀배열과구조체간의전환을수행 num2cell: 주어진수치배열과같은크기의셀배열을생성 동적구조체의보기 : marks 는 4 회에걸친학생들의시험성적을나타내는구조체 >> marks.lee_youngsoo.test(1:4) = [87 98 76 90]; >> marks.hong_killdong.test(1:4) = [96 91 88 75]; >> marks.park_kiyoon.test(1:4) = [90 87 69 94]; 함수 M- 파일 testmark.m 은입력된학생에대한평균점수를계산 : % testmark.m: Dynamic structure 의사용예 function avg = testmark(marks,student,first,last) for i = first:last scores(i) = marks.(student).test(i); end avg = sum(scores)/(last-first+1); 수행결과 : >> testmark(marks,'park_kiyoon',1,4) 85 >> testmark(marks,'lee_youngsoo',1,4) 87.7500 >> testmark(marks,'hong_killdong',2,3) 89.5000

구조체를이용한데이터베이스의생성 : 각지역의기상측정시각과온도 ( 데이터표현의보기 >> meteo = struct('city',{' 서울 ',' 대전 ',' 부산 '},... 'Time',{9 10 12},... 'Temperature',{27 29 31},... 'Pressure',{1013.2 1013.5 1013.1}) meteo = 1x3 struct array with fields: City Time Temperature Pressure >> meteo(1) City: ' 서울 ' Time: 9 Temperature: 27 Pressure: 1.0132e+003 >> meteo(3) City: ' 부산 ' Time: 12 Temperature: 31 Pressure: 1.0131e+003 ) 및압력 (mmbar)

문자열 문자열이나문자배열 (char 배열 ): MATLAB 에서내부적으로해당되는 ASCII 값들에의하여나타나는문자들의배열 >> s = 'ABCabc' s = ABCabc >> sd = double(s) sd = 65 66 67 97 98 99 >> s2 = char(sd) s2 = ABCabc 2 차원문자배열 : 대괄호를이용하여생성 >> subjects = ['Chemistry';'Physics '] subjects = Chemistry Physics

char 함수 : 문자배열의생성에이용 >> W = char('kinetic energy','potential energy', 'Momentum',' 질량 ') W = Kinetic energy Potential energy Momentum 질량 텍스트데이터를셀배열로저장 : >> S = {'Kinetic energy';'potential energy'; 'Momentum';' 질량 '} S = 'Kinetic energy' 'Potential energy' 'Momentum' ' 질량 ' 문자배열을셀배열로, 혹은문자의셀배열을문자배열로자유로이전환 : >> S = cellstr(w); >> W = char(s); 문자열의각문자는 2 바이트를차지 문자열을 double 배열로전환 : 각원소당 8 바이트를차지하는 ASCII 값들의배열이생성

int2str, num2str, 혹은 sprintf 들을이용하여수치변수값들의포맷을변형시켜문자열을생성 >> v = sin((1:3)*pi/6) v = 0.5000 0.8660 1.0000 >> num2str(v) 0.5 0.86603 1 >> q = reshape(1:9,3,3) q = 1 4 7 2 5 8 3 6 9 >> int2str(q) 1 4 7 2 5 8 3 6 9 >> size(ans) 3 7 >> num2str(pi,2) % 자릿수를지정 (2 자리 ) 3.1 >> num2str(pi,15) 3.14159265358979 >> num2str(pi,'%12.5e') % 출력포맷을지정 3.14159e+000

함수 sprintf 는보통포맷지정자와함께사용 여러가지포맷형태에따른 sprintf 출력 : sprintf 와포맷지정자 출력 sprintf('%d',round(pi)) 3 sprintf('%d',pi) 3.141593e+000 sprintf('%s','hello') hello sprintf('the array is %dx%d.',4,5) The array is 4x5. sprintf('\n') ( 줄마침문자 ) 문자열의명령어이용 : >> str = 'sin'; >> t = linspace(0,2*pi); >> q = feval(str,t); >> plot(t,q) 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 0 1 2 3 4 5 6 7

strcat 함수 : 두문자열들을보다긴하나의문자열로연결 >> strcat('hello',' world') Hello world >> ['Hello ' 'world'] Hello world strcmp: 두문자열들을서로비교 - strcmp(s,t) 로부터는 s 와 t 가동일하면 1( 참 ), 그렇지않으면 0( 거짓 ) 이반환 strcmpi: 대문자와소문자를대등한것으로간주 >> strcmp('matlab6','matlab7') 0 >> 'Matlab6'=='Matlab7' 1 1 1 1 1 1 0 관계연산자 : 길이가같은문자열들만을비교하는데에사용. 어떤문자가서로일치하는지를보여주는논리벡터를반환 하나의문자열이다른문자열에포함되는지를테스트하려면 findstr 을이용 : findstr(s,t) 는더짧은문자열이그보다긴문자열속에나타나는위치들의지수들로이루어지는벡터를반환 : >> findstr('bc','abcd') 2 >> findstr('abacad','a') 1 3 5

주어진문자열에서빈칸과글자를구분 : >> S = 'I go now'; >> isspace(s) 0 1 0 0 1 0 0 0 >> isletter(s) 1 0 1 1 0 1 1 1 strrep: 하나의문자열을다른문자열로대체, 하나의문자를빈칸으로대체 >> S = 'I go now'; >> strrep(s,'go','am') % go 를 am 으로대체 I am now >> strrep(s,'go','eat snakes') I eat snakes now >> strrep(s,'o','e') % o 를 e 로대체 I ge new >> strrep(s,'o',' ') % o 를빈칸으로대체 I g n w

다차원배열 다차원배열 : 행렬의경우와유사하게정의하고처리 불규칙정규숫자들의 3 x 2 x 2 배열 >> A = randn(3,2,2) A(:,:,1) = 1.5550-0.5901-0.5399 0.0253 2.0988 0.7866 A(:,:,2) = -0.2387 1.1912 1.6929 0.1464-0.1882-1.6969 기존의 2 차원배열에서원소들에고차원요소를할당함으로써차원을확장 >> B = [1 2 3; 4 5 6]; >> B(:,:,2) = ones(2,3) B(:,:,1) = 1 2 3 4 5 6 B(:,:,2) = 1 1 1 1 1 1

ndims: 차원의수를확인 size: 각차원의원소들의수를반환 >> ndims(b) 3 >> size(b) 2 3 2 cat: 한문장에서원소들을나열하여다차원배열을구성 - 이함수에대한첫번째인수 ( 아래 보기에서 3) 는나머지인수들로이루어지는배열들이연결되는차원을지정 : >> C = cat(3,[1 2 3; 0-1 -2],[-5-3 -1; 10 5 0]) C(:,:,1) = 1 2 3 0-1 -2 C(:,:,2) = -5-3 -1 10 5 0 원소각각에작용하는함수 : 연산, 논리, 그리고관계연산자들과마찬가지로다차원배열에적용

예 : B-ones(size(B)), B.*B, exp(b), 2.^B, 그리고 B > 0 들로부터는모두예상되는결과들이반환 >> sum(b) ans(:,:,1) = 5 7 9 ans(:,:,2) = 2 2 2 >> sum(b,3) 2 3 4 5 6 7 다차원배열의처리를수행하는함수 : 함수 cat ndims ndgrid permute ipermute shiftdim squeeze 기능배열들을연결차원들의수다차원함수들과안짐작을위한배열을생성배열차원을순열배열차원을역순열차원을전이단독차원을제거

global 변수 스크립트 M-파일변수 : Workspace( 작업공간 ) 에기억되어명령어창, 스크립트 M-파일내에서모두구별하지않고사용 함수 M-파일에서사용되는변수 : 작업공간에남지않으며함수내에서작업공간에있는변수를참조불가 함수내에서작업공간의변수를자유롭게읽어내어사용하고싶은경우 : 그변수를 global 변수라고선언 global 변수의선언 : 작업공간과함수 M-파일두부분에서모두선언 global x y

Persistent 변수 함수내에서만내부적으로변수값을유지하고싶은경우 : 그변수를 persistent 변수로선언 persistent 키워드는 C 언어등의 static 변수와같은기능을수행 persistent 선언 : 사용하는함수내에서만수행 persistent 변수의초기치는함수내에변수가정의되어있는지의여부로판단 구체적으로는 isempty 함수에의해판별 persistent x y if(isempty(x)) x=0; end

입력및출력인수의분석 사용자는자신의 M- 파일들에서명령어 nargin, nargout, varargin, varargout 들을사용하여다 양한수의입력및출력인수들을처리 다른형태의입력인수들을처리하기위해 isnumeric, ischar 등과같은명령어들을사용가능 함수 M- 파일이수행되면함수 nargin 과 nargout 은각각명령어라인에서지정된입력및출 력인수들의수를제시 nargin 사용의예시 : function s = add(x, y, z) if nargin < 2 error(' 적어도두개의입력인수들이필요함.') end if nargin == 2 s = x + y; else s = x + y + z; end 더많은수의가능한입력의허용 : varargin 을이용 function s = add(varargin) s = sum([varargin{:}]);

이예에서모든입력인수들은셀배열 varargin 에할당 varargin{:}: 콤마로구분되는입력인수들의목록을구성 입력가운데어떤것이수치값을갖지않으면오류메시지가 display: isnumeric 을사용 function s = add(varargin) if ~isnumeric([varargin{:}]) error(' 입력들은부동소수점수이어야한다.') end s = sum([varargin{:}]);

프로그램의편집 Command Window 에서의편집 명령어라인, 혹은편집창에서프로그램이두줄이상으로길어질경우세개의마침표 (...) 를 이용하여프로그램을여러줄로이어작성 : >> x = 1 + 1/2 + 1/3 + 1/4 + 1/5 +... 1/6 + 1/7 + 1/8 + 1/9 + 1/10 x = 2.9290

명령어창에서의편집키와명령어 : 키 대등한제어키 기능 위쪽화살표 () Ctrl-p 이전라인을호출 아래쪽화살표 () Ctrl-n 다음라인을호출 왼쪽화살표 () Ctrl-b 한글자뒤로이동 오른쪽화살표 () Ctrl-f 한글자앞으로이동 Ctrl 왼쪽화살표 Ctrl-l 한단어왼쪽으로이동 Ctrl 오른쪽화살표 Ctrl-r 한단어오른쪽으로이 동 Home Ctrl-a 라인의시작부분 End Ctrl-e 라인의끝부분 Esc Ctrl-u 라인지우기 Del 뒤로가기 (backspac e) Insert Shift-home Shift-End Ctrl-d Ctrl-h Ctrl-k 커서가있는글자를삭제이전글자를삭제라인끝부분까지삭제삽입모드로전환라인시작부분까지선택라인끝부분까지선택

배열편집기 MATLAB 작업창의왼쪽에서 Workspace 탭을누른다음편집을원하는변수이름을두번클릭 : Array Editor( 배열편집기 ) 창에해당변수에대한스프래드쉬트형태가 display 혹은 openvar('a') 를입력 : A에대한 Array Editor가호출 변수의저장과호출 변수들의저장 : save filename 을입력 이와달리 File-Save Workspace As 메뉴옵션을선택가능 변수 A 와 x 만을저장 : >> save filename A x load filename: filename.mat 으로부터변수들을호출 MAT- 파일 : 다른컴퓨터시스템에서수행되는 MATLAB 들사이에서주고받을수있다. 가져오기함수들에대한그래픽접속기 : File-Import Data 메뉴옵션, 혹은 uiimport 를입력하 여접근할수있는 Import 마법사 보고서에삽입하기위한 MATLAB 출력의확보 : diary 를이용 diary filename: 모든이어지는입력및텍스트출력이지정된파일에복사

diary 기능의제거 : diary off disp: 변수의이름이나 ans 가나타나지않고변수나표현의값을프린트 >> A = eye(2); disp(a) 1 0 0 1 >> disp('result:'),disp(1/7) Result: 0.1429 운영체제와의접속 컴퓨터운영체제와작용하기위한명령어 : cd( 디렉토리바꾸기 ), copyfile( 파일복사 ), mkdir( 디 렉토리만들기 ), pwd( 작업디렉토리를프린트 ), dir 이나 ls( 디렉토리목록 ), delete( 파일지우기 ) 명령어앞에느낌표 (!): 운영체제로이동 예 :!emacs myscript.m 를입력하면 Emacs 편집기를이용하여 myscript 를편집가능

정보찾기 정보제공명령어 : 명령어 bench demo info ver version whatsne w 제공정보및기능사용자의컴퓨터속도를테스트하기위한견주기 (benchmark) 실증프로그램모음 The MathWorks 사에대한정보 MATLAB 및툴박스들의버전및발매일자 MATLAB의버전및발매일자 whatsnew는 Help 탐색기에서발매공고문을불러온다. whatsnew matlab은 MATLAB에대한 readme 파일을보여주는데이파일에서는가장최근버전에도입된새로운기능들을설명하여준다. whatsnew toolbox는지정된툴박스에대한 readme 파일을보여준다.