부록 A. Matlab 사용법 Korea University of Technology and Education School of Mechatronics
차 례 Matlab이란 무엇인가? 기본적인 Matlab 사용법 III. M-file Programming 차 례 Matlab이란 무엇인가? 기본적인 Matlab 사용법 III. M-file Programming IV. Matlab Graphics V. 비선형 방정식 해 구하기 Korea University of Technology and Education School of Mechatronics
I. Matlab이란 무엇인가? Korea University of Technology and Education School of Mechatronics
MATrix LABoratory = MATLAB 수학과 관련된 계산(수치해석적 계산) 알고리즘 개발 모델링과 데이터 분석 여러 가지 공학적인 그래픽적 표현 GUI에 의한 응용 개발 Matlab 의 기본 데이터 요소는 제한 없는 배열(array)로 구성 다양한 Toolbox(신호처리, 통계, 제어, 동적 시스템 해석) 외부 프로그램(C, Fortran)과 연결하여 사용가능 Simulink Korea University of Technology and Education School of Mechatronics
Matlab 사용예 (예제) 다음 함수의 적분식을 구하고 그래프를 그리시오. Korea University of Technology and Education School of Mechatronics
>> y=int('sin(x)') y = -cos(x) >> ezplot(y) >> grid >> y=int('x*sin(x)') y = sin(x)-x*cos(x) >> ezplot(y) >> grid Korea University of Technology and Education School of Mechatronics
(예제) 다음 행렬의 역행렬을 구하시오 >> A=[4 2;1 2] A = 4 2 1 2 (예제) 다음 행렬의 역행렬을 구하시오 >> A=[4 2;1 2] A = 4 2 1 2 >> B=inv(A) B = 0.3333 -0.3333 -0.1667 0.6667 Korea University of Technology and Education School of Mechatronics
-3 (예제) 다음 연립방정식의 해를 구하시오. >> A=[1 2;2 6]; >> B=[4;2]; (예제) 다음 연립방정식의 해를 구하시오. >> A=[1 2;2 6]; >> B=[4;2]; >> x=inv(A)*B x = 10 -3 Korea University of Technology and Education School of Mechatronics
>> ezplot('x^3+sin(x)-3') >> grid (예제) 다음 비선형방정식의 해를 구하시오. >> ezplot('x^3+sin(x)-3') >> grid >> solve('x^3+sin(x)-3') ans = 1.269321245656 Korea University of Technology and Education School of Mechatronics
(예제) 다음 슬라이드 크랭크 기구의 운동을 해석하시오 (예제) 다음 슬라이드 크랭크 기구의 운동을 해석하시오 슬라이드의 위치해석 결과 Simulink Model Korea University of Technology and Education School of Mechatronics
II. 기본적인 Matlab 사용법 Korea University of Technology and Education School of Mechatronics
Matlab 시작하기 명령어 창 Matlab Icon Workspace창 명령어창에 직접 입력하여 결과를 볼 수 있다 명령어 History 창 Matlab 초기화면 Korea University of Technology and Education School of Mechatronics
(예제) 다음 연립방정식의 해를 구하시오. >> A=[1 2;2 6]; >> B=[4;2]; >> x=inv(A)*B x = 10 -3 Korea University of Technology and Education School of Mechatronics
>>변수명(variable) = 수식(expression) >> a=[1 2 3] Matlab 변수 형식 모든 변수는 행렬(배열) 형태이며 “= (assignment operator)” 왼쪽에는 저장할 변수(variable)명을, 오른쪽에는 저장할 행렬수식으로 이루어진다. 변수명은 알파벳과 숫자의 조합으로 할 수 있으나 첫문자는 반드시 알파벳으로 시작하여야 한다. 알파벳은 대문자와 소문자는 서로 다른 변수로 인식한다. >>변수명(variable) = 수식(expression) >> a=[1 2 3] Korea University of Technology and Education School of Mechatronics
>> x=-13; y = 5*x, z = x^2+y y = -65 z = 104 >> x = 5*cos(pi/6), y = 5*sin(pi/6) x = 4.3301 y = 2.5000 Korea University of Technology and Education School of Mechatronics
행렬 생성 방법 >> a=[1 1 1;1 2 3;1 3 6] ↲ a = 1 1 1 1 2 3 1 3 6 Matlab 명령창에서 행렬을 만드는 경우, 열(column)의 원소들은blanks 또는 comma로 구분을 한다. 행(row)의 원소들은 semicolon(;)으로 구분하거나 “enter 키”를 누르면 된다. 다 작성한 행렬요소는 square brackets( [ ] )으로 닫아 준다. 예를 들어서, 3행3열의 다음과 같은 행렬 A를 만들어 보자. >> a=[1 1 1;1 2 3;1 3 6] ↲ a = 1 1 1 1 2 3 1 3 6 Korea University of Technology and Education School of Mechatronics
>> x=min_val : delta : max_val Colon Operator “ x "가 1부터 1씩 증가하여 10까지 증가한다. >> x=1:10 x = 1 2 3 4 5 6 7 8 9 10 >> x=min_val : delta : max_val “ x "가 1부터 0.2씩 증가하여 2까지 증가한다. >> x=1:0.2:2 x = 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000 Korea University of Technology and Education School of Mechatronics
행렬의 계산 역행렬 >> a=[1 1 1;1 2 3;1 3 6] ↲ a = 1 1 1 1 2 3 1 3 6 1 1 1 1 2 3 1 3 6 >> b=inv(a) b = 3 -3 1 -3 5 -2 1 -2 1 Korea University of Technology and Education School of Mechatronics
덧셈과 뺄셈 >> a=[1 1 1;1 2 3;1 3 6]; >> b=[3 -3 1;-3 5 -2;1 -2 1]; >> c=a+b c = 4 -2 2 -2 7 1 2 1 7 >> d=a-b d = -2 4 0 4 -3 5 0 5 5 Korea University of Technology and Education School of Mechatronics
덧셈과 뺄셈 >> a=[1 1 1;1 2 3;1 3 6]; >> b=a+2 b = 3 3 3 3 4 5 3 3 3 3 4 5 3 5 8 전치행렬(transpose) >> a=[1 2 3;4 5 6;7 8 9]; >> b=a' b = 1 4 7 2 5 8 3 6 9 Korea University of Technology and Education School of Mechatronics
곱셈 >> a=[1 1 1;1 2 3;1 3 6]; >> b=a*a b = 3 6 10 6 14 25 3 6 10 6 14 25 10 25 46 >> b=a^2 Korea University of Technology and Education School of Mechatronics
곱셈 >> a=[1 1 1;1 2 3;1 3 6]; >> b=[3 -3 1;-3 5 -2;1 -2 1]; >> c=a*b c = 1 0 0 0 1 0 0 0 1 Korea University of Technology and Education School of Mechatronics
Matlab 연산자 산술연산자(arithmetic operators) 관계연산자(relational operators) 수치 계산을 행하는 연산자로써, 사칙연산이나 거듭 제곱 등 관계연산자(relational operators) 배열을 구성하는 각각의 원소에 대한, “작다(less), 같지 않다(not equal to) 등 비교할 때 사용한다 논리연산자(logical operators) "AND", "OR"등의 논리 연산을 행하며 “TRUE", "FALSE"와 같은 결과를 알려 준다. 연산자 우선순위 산술 연산자가 가장 우선 순위가 높고, 그 다음으로 관계 연산자이며, 마지막으로 논리 연산자 순서이다. 그러나, 만일, 같은 우선 순위를 갖는 연산자이면, 왼쪽에 위치한 연산자부터 계산해 나간다. 물론, “ ( ) ”를 수식에 취하면 가장 높은 연산 순위를 갖는다. Korea University of Technology and Education School of Mechatronics
관계연산자(relational operators) 관계 연산자는 항상 원소 대 원소(element-by-element)로 연산한다. 주어진 관계가 사실인 경우(TRUE) 해당 위치에는 “1”을 반환하고, 거짓인 경우(FALSE)에는 해당 위치에 “0”을 반환한다. 관계 연산자는 논리 연산자와 함께 앞으로 M-files를 작성 할 때, " if , while, for, switch "등과 더불어 실행순서를 제어하는 데 귀하게 쓰일 것이다. 관계 연산자의 종류 해당 연산자에 대한 설명 < “보다 적다(Less than)" <= "적거나 같다(Less than or equal to)" > "보다 크다(Greater than)" >= "크거나 같다(Greater than or equal to)" == "같다(Equal to)" ~= "같지 않다(Not equal to)" Korea University of Technology and Education School of Mechatronics
관계연산자의 예 >> a=[2 7 6;9 0 -1;3 5 6]; >> b=[8 0.2 0;-3 2 5;4 -1 7]; >> c=a<b c = 1 0 0 0 1 1 1 0 1 >> c(2,2) ans = 1 >> a=1;b=2; >> c=a<b c = 1 >> d=a>b d = >> a=[1 2 3]; >> b=[3 1 2]; >> c=a<b c = 1 0 0 Korea University of Technology and Education School of Mechatronics
논리연산자(logical operators) Matlab의 논리 연산자는 “ AND, OR, and NOT"을 수행한다. 주어진 관계가 사실인 경우(TRUE) 해당 위치에는 “1”을 반환하고, 거짓인 경우(FALSE)에는 해당 위치에 “0”을 반환한다. “0”일때는 거짓으로 보고 부호와 숫자의 크기은 참 거짓과 관계가 없다 논리 연산자의 종류 해당 연산자의 설명 & AND | OR ~ NOT Matlab의 논리 연산자의 종류 Korea University of Technology and Education School of Mechatronics
논리연산자의 예 “AND ” 연산자 >>U=[-1 0 2 3 0 5]; ↲ 여기서, 참이라 함은 영이 아닌 수치(nonzero number)를 말한다. >>U=[-1 0 2 3 0 5]; ↲ >>V=[5 6 1 0 0 7]; ↲ >>U & V ↲ ans = 1 0 1 0 0 1 Korea University of Technology and Education School of Mechatronics
“OR ” 연산자 >>U=[-1 0 2 3 0 5]; ↲ >>V=[5 6 1 0 0 7]; ↲ ans = 1 1 1 1 0 1 “NOT”연산자 “NOT” 연산자는 피 연산자의 부정을 행할 때 이용된다. >>~U ↲ ans = 0 1 0 0 1 0 Korea University of Technology and Education School of Mechatronics
논리함수(logical functions) 논리 함수의 종류 해당 함수에 대한 설명 xor exclusive OR연산을 행한다. all 주어진 벡터의 모든 원소가 “참(nonzero)”인 경우에만 “1”을 반환한다. any 주어진 벡터의 임의의 원소가 “참(nonzero)”인 경우에 “1”을 반환한다. isnan 주어진 벡터의 원소 중에서 “NaN”이 위치한 곳에는 “1”을 반환한다. isfinite 주어진 벡터의 원소 중에서 유한한 크기를 갖는 수치, 또는 NaN이 아닌 곳에는 “1”을 반환한다. isinf 주어진 벡터의 원소 중에서 유한한 크기를 갖는 곳에는 “1”을 반환한다. Korea University of Technology and Education School of Mechatronics
III. M-file Programming Korea University of Technology and Education School of Mechatronics
M-file이란 무엇인가 전체적인 의미로 M-file이란 Matlab언어로 쓰여진 파일들(files)을 말한다. M-file은 연속적인 Matlab문장들(명령어들)을 수행하는 script 양식(script mode)과 입력 매개변수와 출력 매개변수를 다루는 함수 양식(function mode)이 있다. M-file은 Matlab이 제공하는 text editor를 이용하여 작성 할 수 있고, 다른 여러 종류의 ASCII text editor를 이용할 수도 있다. Korea University of Technology and Education School of Mechatronics
M-file 종류 비교 script mode의 M-file function mode의 M-file 파일 이름은 어떠한 이름으로도 할 수 있다. 파일의 이름은 function이름과 가능 한한 같게 한다. base workspace에 있는 data에 대해서 연산한다. function workspace에 있는 data에 대해서 연산한다. Matlab command window에 있는 변수 공간 function mode의 M-file 내에서만 존재하는 내부변수 전역변수나 userdata를 이용하면 function worspace변수를 base workspace에서도 사용할 수 있다. 그러나 편리한 데이터 교환은 출력 변수와 입력 변수를 사용하는 것이 좋다. Matlab은 이처럼 변수를 연산하는 작업공간이 따로 설정되어 있다 Korea University of Technology and Education School of Mechatronics
Script Mode의 M-file 작성하기 (예제) 주어진 A 행렬의 역행렬을 구하는 M-file을 작성해 보자. M-file "test.m"의 내용 A=[1 2 4; 3 5 6; 6 2 1] B=inv(A) Korea University of Technology and Education School of Mechatronics
Korea University of Technology and Education School of Mechatronics
만들어진 M-file을 실행시키기 위해서는 명령 창에서 test라고 입력하고 enter를 치면 test 만들어진 M-file을 실행시키기 위해서는 명령 창에서 test라고 입력하고 enter를 치면 test.m 파일에 포함된 명령들을 수행한다. Korea University of Technology and Education School of Mechatronics
(예제) 주어진 두개의 행렬 A,B 의 합과 차 그리고 곱을 구하는 m-file을 작성하시오 결과 >> test1 c = 4 -2 2 -2 7 1 2 1 7 d = -2 4 0 4 -3 5 0 5 5 e = 1 0 0 0 1 0 0 0 1 a=[1 1 1;1 2 3;1 3 6]; b=[3 -3 1;-3 5 -2;1 -2 1]; c=a+b d=a-b e=a*b 실행 m - file Korea University of Technology and Education School of Mechatronics
Function Mode의 M-file 작성하기 Matlab에서 function mode M-file을 작성하려면, (1) “ function 출력 변수 = 함수 이름(입력 변수) ”의 형태로 함수를 정의한다. (2) “ % ”으로 시작하는 주석을 단다. Matlab 4.2c이전 버전들에서는 script mode의 M-file은 어떠한 이름으로도 파일 이름을 설정할 수 있지만, function mode의 M-file은 function이름과 같은 이름의 M-file로 저장해야 했었다. 그러나, Matlab5.0이후 버전에서는 이러한 제한요소가 없어졌다. 만일, 함수 정의 부에 있는 이름과 파일 이름이 다르다면, Matlab은 함수 정의 부에 있는 이름을 무시하고, 파일이름을 이용한다. 그러나, 가능한한 function mode M-file의 경우, 파일 이름은 함수이름과 같게 하는 것이 좋다. Korea University of Technology and Education School of Mechatronics
(예제) 주어진 행렬의 역행렬을 구하는 M-file을 작성해 보자. M-file을 저장할 때 file 이름은 함수명으로 한다 파일명 : inverse.m Korea University of Technology and Education School of Mechatronics
function y=inverse(a) % 행렬 a에 대한 역행렬을 계산하여 반환한다. y=inv(a) 함수명 출력변수 입력변수 function y=inverse(a) % 행렬 a에 대한 역행렬을 계산하여 반환한다. y=inv(a) M-file을 저장할 때 file 명은 함수명으로 한다. Inverse.m Korea University of Technology and Education School of Mechatronics
Functiont Mode의 M-file 실행하기 다음 그림은 command window에서 inverse를 실행한 예를 보여주고 있다. 그림에서 알 수 있듯이 “inverse”함수는 입력 매개변수 값을 이용하여 역행렬을 계산하고 그 결과를 출력 변수를 통하여 Base workspace로 반환한다. >> a=[1 2;2 3]; >> y=inverse(a) y = -3 2 2 -1 Function m-file : inverse.m function y=inverse(a) % 행렬 a에 대한 역행렬을 계산하여 반환한다. y=inv(a) Korea University of Technology and Education School of Mechatronics
if 논리적인 식 명령어 문장 명령어의 흐름제어 elseif 논리적인 식 명령어 문장 else 명령어 문장 end 명령어 문장 elseif 논리적인 식 명령어 문장 else 명령어 문장 end (1) if, else와 elseif 만일, “if 문장”의 논리적인 식이 “1(TRUE)"이면, Matlab은 명령어를 수행한다. 그러나, 논리적인 식의 값이 ”0(FALSE)"이면 명령어 문장을 건너뛴다 만일, 논리적인 식의 값이 scalar가 아니라 배열(array)로 주어진다면, 그 배열의 모든 원소가 “참(TRUE)"이어야 ”참(TRUE)"이다 Korea University of Technology and Education School of Mechatronics
(2) switch 문 switch 변수 또는 식 case 값1 %만일, 변수 또는 식이 “값1”인 경우! 명령어 문장 명령어 문장 case 값2 %만일, 변수 또는 식이 “값2”인 경우! 명령어 문장 ... 임의의 수의 case 문들 ... otherwise %만일, 변수 또는 식의 값이 %어떠한 case 값들과도 맞지 않을 때 명령어 문장 end C언어에서의 “switch 문”과는 달리 Matlab에서의 switch문은 변수 또는 식의 값과 맞는 “case문”의 명령어만 수행하므로 C언어에서처럼 “break” 명령어가 따로 필요 없다. C언어에서의 “switch”문에 있는 “default”명령어는 Matlab에서 “otherwise”에 해당한다. Korea University of Technology and Education School of Mechatronics
for 지수(index)=초기치 : 증분 : 최종치 명령어 문장들 end 명령어 문장들 end 기본적으로 증분량을 지정하지 않으면, 매번 반복할 때마다 증분하는 양은 “1”로 된다. Matlab은 배열의 첫 번째 요소를 다른 언어에서처럼 “0”으로 잡는 것이 아니라 “1”로 잡는다. 그러므로 초기치가 “0”부터 시작 한다면 배열의 subcript로는 사용될 수 없다 Korea University of Technology and Education School of Mechatronics
논리적인 조건이 “참(TRUE)”이어야 명령어 문장을 실행한다. (4) while 문 while 논리적인 조건 명령어 문장들 end 논리적인 조건이 “참(TRUE)”이어야 명령어 문장을 실행한다. “while 문”에서의 “참일 조건”은 “if 문”에서의 “참일 조건”과 같다. Korea University of Technology and Education School of Mechatronics
기타 유용한 함수 (1) Input 함수 "R=input('prompt', 's')“ →"input.m"함수는 실행 시, ‘prompt' string이 나오고, →사용자가 문자열을 입력할 때까지 기다린다. →사용자가 문자열을 입력하면, 그 입력된 문자열은 →출력 변수 R 에 반환된다. →단, 문자열이 수식을 표현하는 경우 계산되지 않는다. (b) "R=input('prompt')“ →사용자가 수식이나 변수이름을 입력할 때까지 기다린다. →입력된 것이 수식인 경우에는 base workspace에 있는 변수들에 →기반을 두고 계산하여 그 결과 값을 출력 변수 R 에 반환 한다. Korea University of Technology and Education School of Mechatronics
>> R=input('아무 문자나 입력하시오','s') 아무 문자나 입력하시오 test R = test >> x=2; y=3; >> R=input('아무 문자나 입력하시오','s') 아무 문자나 입력하시오 test R = test >> R=input('변수 이름이나 수식을 입력하시오') 변수 이름이나 수식을 입력하시오 x+y 5 test 입력 X+y 입력 Korea University of Technology and Education School of Mechatronics
(2) menu 함수 "R=input('menu title', '선택1','선택2', ... ,'선택3')" →주어진 'menu title'을 가진 menu window를 생성한다. →선택1, ... ,선택2 항목은 각각 “push" 버튼의 label로 나타난다. →임의의 “push"버튼을 click하면 해당하는 →선택n의 번호를 반환한다. (예제) k=menu('선의 색을 결정','red','green','blue') Korea University of Technology and Education School of Mechatronics
IV. Matlab Graphics Korea University of Technology and Education School of Mechatronics
(c) Line object (d) Patch object (a) figure object (b) Axes object (e) Surface object (f) Image object (i) Uimenu object (h) Uicontrol object (g) Text object Korea University of Technology and Education School of Mechatronics graphics objects”의 종류
Plot 함수 (예제) 그래프를 그리시오. plot(X,Y) : X1의 열 벡터와 Y1의 열 벡터가 각각의 line을 구성한다. >> n=100; >> h=2*pi/n; >> x=0:h:2*pi; >> y=sin(x); >> plot(x,y) >> grid Grid(눈금선) Korea University of Technology and Education School of Mechatronics
plot(Y) Y가 실수이면, x축은 Y의 index이고, y축은 Y의 열 벡터들로 이루어진다. Y가 복소수이면, x축은 real(Y), y축은 imag(Y)로 이루어진다. y = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 X = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 >> y=1:2:20; >> plot(y) >> grid Korea University of Technology and Education School of Mechatronics
X의 열(행) 벡터와 Y의 열(행) 벡터가 각각의 line을 구성한다. (2) plot(X,Y) X의 열(행) 벡터와 Y의 열(행) 벡터가 각각의 line을 구성한다. >> y=[0 2 4 6 8 10]; >> y=[0 2 4 3 6 5]; >> plot(x,y) >> grid >> x=[-1 1 3 5 7 9]'; >> y=[0 2 4 3 6 5]'; >> plot(x,y) >> grid Korea University of Technology and Education School of Mechatronics
plot(X,Y) X,Y가 행렬(배열)인 경우 대응하는 X의 열(행) 벡터와 Y의 열(행) 벡터가 각각의 line을 구성한다. y = 1 1 1 2 4 6 3 6 9 x = 1 1 1 2 2 2 3 3 3 >> x=[1 1 1;2 2 2;3 3 3]; >> y=[1 1 1;2 4 6;3 6 9]; >> plot(x,y) >> grid Korea University of Technology and Education School of Mechatronics
>> x=3; >> y=1:0.5:4; >> plot(x,y,'*') (3) plot(S,Y) X가 상수이고 Y가 열(행)벡터인 경우 X 값에 대하여 Y 값이 연결되지 않은 점으로 나타난다 >> x=3; >> y=1:0.5:4; >> plot(x,y,'*') y = 3 X = 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0 Korea University of Technology and Education School of Mechatronics
LineSpec은color, maker, linestyle, 로 구성되어 선의 style을 결정한다. Line 스타일 plot(X1,Y1,LineSpec,...) LineSpec은color, maker, linestyle, 로 구성되어 선의 style을 결정한다. LineSpec = ‘C+M+S’ Color Maker Line Style b blue . point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus -- dashed m magenta * star y yellow s square k black d diamond v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram Korea University of Technology and Education School of Mechatronics
>> x=1:5; >> y=[0 4 2 6 7]; >> plot(x,y,'bd:') >> grid ‘ b ’ : blue ‘ d ’ : diamond ‘ : ’ : dot line Korea University of Technology and Education School of Mechatronics
axis([xmin xmax ymin ymax zmin zmax]) 기타 그래픽과 관련된 명령어 그래프의 범위 변환 axis([xmin xmax ymin ymax zmin zmax]) 좌표의 범위(range)를 결정해준다. 2차원 그래프인 경우에는 "zmin zmax"만 빼주면 된다. >> t=1:1/100:20; >> y=sin(t); >> plot(t,y) >> grid >> axis([0 5 -1 1]) Korea University of Technology and Education School of Mechatronics
axis square : 그림창을 정사각형으로 바꾸어 준다. axis equal : 가로 세로의 치수 비율을 1:1로 해준다 그래프의 가로 세로 비율 변환 axis square : 그림창을 정사각형으로 바꾸어 준다. axis equal : 가로 세로의 치수 비율을 1:1로 해준다 >> t=[0:10:360]*(pi/180); >> x=2*cos(t); >> y=2*sin(t); >> plot(x,y) >> grid >> axis square Korea University of Technology and Education School of Mechatronics
axis square : 그림창을 정사각형으로 바꾸어 준다. axis equal : 가로 세로의 치수 비율을 1:1로 해준다 Korea University of Technology and Education School of Mechatronics
Title/Axis title/Legend 사용법 >> x=-pi:pi/20:pi; >> plot(x,cos(x),'r-',x,sin(x),'b-.'); >> xlabel('x axis'); >> ylabel('value'); >> title('Sine and Cosine Curve'); >> h=legend('cos','sin',0); h-=legend(‘string1’, ‘string2’,…., pos) Korea University of Technology and Education School of Mechatronics
h-=legend(‘string1’, ‘string2’,…., pos) h=legend('cos','sin',0) h=legend('cos','sin',-1) h=legend('cos','sin',2 “legend.m”함수에서의 “pos”값에 의한 legend 위치 pos legend의 위치 -1 좌표계의 오른쪽 밖에 놓는다. 좌표계의 안쪽에 놓는다. 1 좌표계의 upper-right corner에 놓는다. 2 좌표계의 upper-left corner에 놓는다. 3 좌표계의 lower-left corner에 놓는다. 4 좌표계의 lower-right corner에 놓는다. [XlowerLeft YlowerLeft] normalized units 체계에서 주어진 좌표 값에 놓는다. Korea University of Technology and Education School of Mechatronics
subplot(m,n,p) 여러 개의 그래프 동시 표현법 >> t=0:1/100:20; 하나의 figure에 대해 rectangular 좌표계를 원소로 갖는 m행 n열의 작은 좌표계를 여러개 만들어 내고, 좌측 상단부터 차례로 1,2,…m*n의 순서로 그래프가 들어갈 번호가 정해지며 p번째의 자리에 그래프를 그린다. >> t=0:1/100:20; >> subplot(2,2,1); >> plot(t,sin(t)); >> subplot(2,2,2); >> plot(t,cos(2t)); >> plot(t,cos(t)); >> subplot(2,2,3); >> plot(t,exp(-t)); >> subplot(2,2,4); >> plot(t,exp(-sin(t))); Korea University of Technology and Education School of Mechatronics
hold on/hold off 그래프 겹처 그리기 >> t=0:1/100:20; 만일, figure안에 다른 그래프를 첨가하려면, 먼저 그림을 생성한 후 ">>hold on "하면 된다. 그러면, 원래의 그림 위에 앞으로 나오는 모든 그래프는 합쳐져서 나타난다. 더 이상 같은figure에 그래프를 첨가시키고 싶지 않으면 ">>hold off "라고 명령한다. 그러면, 이 후 만들어지는 그래프는 새로운 figure에 나타난다. >> t=0:1/100:20; >> plot(t,sin(t)); >> hold on >> plot(t,cos(t)); Korea University of Technology and Education School of Mechatronics
grid on/grid off 눈금선(grid) 그리기 >> t=0:1/100:20; x,y 축 모두에 점선의 그리드를 첨가하려면 “grid on” 명령을 하면 된다. 활성 그림창에서 그리드 라인을 제거하기 위하여 “grid off” 명령을 하면 된다. >> t=0:1/100:20; >> plot(t,sin(t)); >> hold on >> plot(t,cos(t)); >> grid on; >> grid off >> set(gca,'xgrid','on','gridlinestyle','-.') xgrid, ygrid, zgrid : 각각의 좌표축에만 "grid"를 첨가. b) Gridlinestyle : "grid" Line의 style을 변경 Korea University of Technology and Education School of Mechatronics
Matlab Symbolic 연산 및 수식 그래프 Matlab 에서는 Symbolic 객체에 대한 Symbolic 연산이 가능하다. Symbolic 객체의 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 및 거듭제곱(^)등의 산술연산과 함수를 포함하는 다른 Matlab 함수를 사용하여 수행될 수 있다. 사용방법은 먼저 변수를 Symbolic으로 지정하여야 한다. >> syms x y >> a=[cos(x), -sin(x); sin(x), cos(x)]; >> b=[y,0;0,-y]; >> d=a*b d = [ cos(x)*y, sin(x)*y] [ sin(x)*y, -cos(x)*y] >> a a = [ cos(x), -sin(x)] [ sin(x), cos(x)] >> b b = [ y, 0] [ 0, -y] >> c=a+b c = [ cos(x)+y, -sin(x)] [ sin(x), cos(x)-y] Korea University of Technology and Education School of Mechatronics
그래프의 x 축의 범위를 한정하기 위해서는 다음과 같이 x 축의 한계값을 사용한다. ezplot(f,[a,b]) Symbolic 수식의 그래프 그리기 Symbolic으로 되어있는 수식을 그래프로 그리기 위해서는 ezplot을 사용한다. ezplot(f) 그래프의 x 축의 범위를 한정하기 위해서는 다음과 같이 x 축의 한계값을 사용한다. ezplot(f,[a,b]) >> syms x y >> f=1/(1+x*cos(x)+exp(x)); >> ezplot(f) >> grid on ezplot(f) ezplot(f,[-2,2]) Korea University of Technology and Education School of Mechatronics
V. 비선형 방정식 해 구하기 Korea University of Technology and Education School of Mechatronics
>> f=(sin(x)^2+cos(x)-1)/(12+2*sin(x))^4; >> ezplot(f) 1개 변수 비선형 방정식의 해 다음 비선형 방정식의 해를 구하시오 함수의 그래프 모양 >> syms x >> f=(sin(x)^2+cos(x)-1)/(12+2*sin(x))^4; >> ezplot(f) >> grid on Korea University of Technology and Education School of Mechatronics
Fzero(‘함수명(파일명)’,초기치) function f=fun1(x) f=(sin(x)^2+cos(x)-1)/(12+2*sin(x))^4; M-file : File name : fun1.m >> fzero('fun1',2) ans = 1.5708 Base workspace >> fzero('fun1',4) ans = 4.7124 초기치에 따라 값이 달라진다 Korea University of Technology and Education School of Mechatronics
>> x=fsolve('fun2',x0) x = 0.5671 function f=fun2(x) 비선형 연립방정식의 해 비선형 연립방정식의 해는 fsolve 함수를 이용하여 구할 수 있다. fsolve 함수는 Optimization Toolbax내에존재하는 함수이므로 Optimization Toolbax를 설치해야 사용할 수 있다 다음 비선형 방정식의 해를 구하시오 Base workspace M-file : File name : fun2.m >> x=fsolve('fun2',x0) x = 0.5671 function f=fun2(x) f=[2*x(1)-x(2)-exp(-x(1)); -x(1)+2*x(2)-exp(-x(2))]; Korea University of Technology and Education School of Mechatronics
>> f1=2*x1-x2-exp(-x1); >> f2=-x1+2*x2-exp(-x2); 다음 비선형 방정식의 그래프를 그리시오 >> syms x1 x2 >> f1=2*x1-x2-exp(-x1); >> f2=-x1+2*x2-exp(-x2); >> ezplot(f1); >> hold on >> ezplot(f2); >> grid Korea University of Technology and Education School of Mechatronics