MATLAB 기초강의

Download Report

Transcript MATLAB 기초강의

MATLAB 기초강의
연세대학교 방사선학과
방사선영상 실험 실습
MATLAB이란?
 Matlab이란 MATrix LABoratory를 뜻하는 말로서,
수치해석, 행렬연산, 신호처리 및 간편한 그래픽 기
능 등을 통합하여 고성능의 수치계산 및 결과의 가
시화 기능을 제공하는 프로그램이다.
 Matlab은 이용하고자 하는 분들의 전공에 도움을
주고자 toolbox를 가지고 있다. toolbox란 신호 처
리, 통계학, 영상 처리, 제어, fuzzy logic, 재정, 화
학 공정, 등등, 즉, toolbox란, 해당 전공 부분의 내
용을 심도 있게 지원하는 함수들의 도서관과 같은
것이다.
 Matlab 코딩 체계는 우리에게 친숙한 수학적
인 기호와 간단한 C문법으로 행하여 지는데,
전형적인 이용 범위는 다음과 같다.





수학과 관련된 계산
알고리즘 개발
상황 모델링과 data분석
Matlab여러 가지 과학과 공학적인 그래픽적 표현
GUI(Graphical User Interface)에 의한 에플리케
이션 개발
MATLAB의 특징
 행렬 데이터가 기본 연산
 M file을 사용한 프로그래밍
 Toolbox
 심볼로 이루어진 수식을 계산하는 기호 계산
 GUI프로그래밍
 SIMULINK
왜 Matlab을 배워야 하는가?
y   sin(x)

위의 적분의 프로그래밍에 대해
생각해 보자.
Matlab에서 위와 같은 문제는
>> y=int('sin(x)');
>> ezplot(y);
Matlab은 강력한 수학적인 능력
을 갖고 있고, 또한, 쉽게 주어진
상황을 코딩화할 수 있다.
MATLAB 시작하기
Workspace
현재 실행되어 있는
MATLAB 내의 변수들의 목록
Command Windows
Matlab의 메인 창 역할을 하면서 사용자로부터
입력을 받아 연산을 수행한 후 다시 사용자가
알아볼 수 있는 형태로 출력하는 역할,
만약 프로그램의 오류 등으로 인한 에러 메시지도
Command Windows에 나타나게 된다.
MATLAB의 Help 사용하기 1
 Help 사용법
>> Help topic_name
MATLAB의 Help 사용하기 2
MATLAB을 이용한 행렬계산 1
 variable = expression
* variable : 변수, 기본적으로
타 language에서의 지원 변수
와 거의 유사한 형태를 지원

EX.
>> a = [1,2,3;4,5,6;7,8,9]
a=
1
4
7
>>
2
5
8
3
6
9
 주석문 처리는 문장앞에 “%”.
 행렬에서 행 구분은 “;”,
열 구분은 “ ” 또는 “,”.
 수식 표현 뒤에 “;”를 붙이면
결과값이 Command
Windows에 출력되지 않는다.
 입력한 행렬은 Workspace에
서 확인 가능.
 콜론(:)을 사용해서 증가나 감
소하는 벡터를 쉽게 만들수 있
다.
MATLAB을 이용한 행렬계산 2
>> a(1,3)
ans =
3
>> a(1,1:3)
ans =
1
2
4
>> a(1,3)=4
a=
1
2
4
4
5
6
7
8
9
>> a(1,:)
ans =
1
2
4
>> a(:,:)
ans =
1
2
4
5
7
8
4
6
9
>> a(1:2,3)
ans =
4
6
>> i = 0:0.1:0.5
i=
0 0.1000 0.2000
0.4000 0.5000
0.3000
MATLAB을 이용한 행렬계산 3
 행렬의 사칙연산
더하기
+
행렬간의 차원이 같아야 한다.
빼기
-
행렬간의 차원이 같아야 한다.
행렬간 곱하기
*
행렬간의 내부 차원이 같아야 한다.
/ (AB¹)
행렬간 나누기
\(A¹B)
행렬의 행렬식이 존재해야 한다.
행렬간의 내부 차원이 같아야 한다.
행렬요소간 곱하기
.*
행렬간의 차원이 같아야 한다.
행렬요소간 나누기
./
행렬간의 차원이 같아야 한다.
MATLAB을 이용한 행렬계산 4
>> A = [ 1 2 ; 3 4 ]
A=
1
3
2
4
>> B = [ 3 4 ; 5 6 ]
B=
3
5
4
6
>> A+B
ans =
4
8
6
10
8
24
>> A/B
ans =
2
1
-1
0
-1.0000
2.0000
-2.0000
3.0000
>> inv(A)*B
ans =
-2
-2
>> A*B
ans =
13
29
3
15
>> A\B
ans =
>> A-B
ans =
-2
-2
>> A.*B
ans =
-1.0000
2.0000
>> B/A
ans =
16
36
0
-1
1
2
-2.0000
3.0000
MATLAB의 기본적인 수학 함수, 삼각함수
수학 함수
abs(x)
x의 절대값을 계산
sqrt(x)
x의 근호값을 계산
round(x)
x를 가까운 정수로 반올림
sign(x)
x가 0보다 작으면 -1, 0이면 0. 0보다 크면 1
rem(x,y)
x/y의 나머지를 계산
exp(x)
e^x를 계산
삼각함수
sin(x)
sin(x) 계산
cos(x)
cos(x) 계산
tan(x)
tan(x) 계산
asin(x)
1/sin(x) 계산
acos(x)
1/cos(x) 계산
atan(x)
1/tan(x) 계산
atan2(x,y)
1/tan(y/x) 계산
PLOT 사용하기
 plot(xdata, ydata, 'color_linestyle_marker')


xdata와 ydata의 크기가 일치해야 한다.
하나의 창 안에 여러 그래프를 동시에 그리려면..

>>
>>
>>
>>
>>
plot(x1, y1,’속성1’, x2, y2,’속성2’, x3, y3,’속성3’, ...)
i = -pi:0.1:pi;
x = cos(i);
y = sin(i);
plot(x,y);
grid on;
PLOT 사용하기
Figure 창 열기
 figure


새로운 그림 창을 생성
이미 존재하는 그림창을 활성화 한다.
figure
 figure(10)

% 새로운 그림 창 생성
% 10번 그림 창 생성 혹은 활성화
Multi graphic 객체 사용하기
 subplot(MNI) or subplot(M,N,I)

M(행의 갯수), N(열의 갯수), I(하부영역의 순서)
>> subplot(221)
>> subplot(222)
>> subplot(212)
subplot(221)
subplot(222)
subplot(212)
PLOT 사용하기
 plot(xdata, ydata, 'color_linestyle_marker')



xdata와 ydata의 크기가 일치해야 한다.
그래프의 속성은 무시해도 된다.
하나의 창 안에 여러 그래프를 동시에 그리려면..

plot(x1, y1,’속성1’, x2, y2,’속성2’, x3, y3,’속성3’, ...)
그래프의 속성
가능한 선의 Color
가능한 선의 marker
Matlab
Symbol
Color
Matlab
Symbol
Color
Matlab
Symbol
Marker
Style
Matlab
Symbol
Marker
Style
c
하늘
g
초록
+
+
^
△
m
자주
b
파랑
o
o
v
▽
y
노랑
w
흰색
*
*
>
▷
r
빨강
k
검은색
.
●
<
◁
x
×
pentagra
m
☆
가능한 선의 Style
Matlab
Symbol
Style
Matlab
Symbol
Style
Square
□
hexagram
¤
-
Solid
line
:
Dotted
line
Diamond
◇
none
No marker
(default)
--
Dashed
line
-.
Dash-dot
line
none
No Line
실 습 1.
 -pi < x < pi 일 때(단 x의 스텝은 0.05),

figure(1)의 subplot(211)에
X축에 x, Y축에 a=cos(x)를 plot 하라.

figure(1)의 subplot(212)에
X축에 x, Y축에 b=sin(x)를 plot 하라.

figure(2)의 X축에 a, Y축에 b를 plot하라
실 습 1.
% 실습 1.
x= -pi:0.05:pi;
a=cos(x);
b=sin(x);
figure(1);
subplot(211);
plot(x,a);
subplot(212);
plot(x,b);
figure(2)
plot(a,b);
제목, 각 축의 이름, 격자 넣기
 title(‘그래프의 제목’)

그래프의 제목을 나타낼 때 사용한다.
 xlabel(‘X축 이름’)

x축의 이름을 넣을 때 사용한다.
 ylabel(‘Y축 이름’)

y축의 이름을 넣을 때 사용한다.
 zlabel(‘Z축 이름’)

z축의 이름을 넣을 때 사용한다.
 grid

그래프 객체에 격자를 더하거나 없앤다.
범례, 축의 한계값 사용하기
 legend(‘문자열1’,‘문자열2’,...,정수)
문자열1:첫번째 그래프에 대한 범례
 문자열2:두번째 그래프에 대한 범례

 axis([x1,x2,y1,y2])
x1 : x축의 최소값, x2 : x축의 최대값
 y1 : y축의 최소값, y2 : y축의 최대값

 xlim([x1,x2]) : x축 제한
 ylim([y1,y2]) : y축 제한
실습 2.
 실습 1의 각 그래프에 축의 이름을 붙인다.
 실습 1의 각 그래프에 제목을 붙인다.
 실습 1의 각 그래프에 격자를 넣는다.
 실습 1의 cos(x), sin(x) 그래프를 하나의 그
래프(figure(3))에 그리고, 범례를 넣는다.
% 실습 2.
figure(1)
subplot(211)
xlabel('x');
ylabel('a');
title('a=cos(x)');
grid on;
subplot(212)
xlabel('x');
ylabel('b');
title('b=sin(x)');
grid on;
figure(2)
xlabel('x');
ylabel('y');
axis([-2,2,-2,2]);
title('Graph of Circle');
grid on;
figure(3)
plot(x,a,x,b);
legend('cos(x)','sin(x)');
xlabel('x');
ylabel('y');
grid on;
기본적인 그래픽 함수들
함 수
설 명
plot
x와 y축에 대해서 모두 선형 배율로 된 그래프
loglog
x와 y축에 대해서 모두 log배율로 된 그래프
semilogx
x축에 대해서는 log배율, y축에 대해서는 선형
배율로 된 그래프
x축에 대해서는 선형 배율, y축에 대해서는 log
semilogy
배율로 된 그래프
plotyy
두 개의 y축 선형 배율을 가진다.
그래픽 함수 비교 1
그래픽 함수 비교 2
SIMULINK
SIMULINK란..
 Simulink



dynamic system 을 컴퓨터를 사용하여 모델링
하고 시뮬레이션하여 시스템을 해석하기 위한 패
키지
블록 다이어그램으로 된 GUI환경을 제공하므로
사용자는 단지 마우스만을 사용하여 블록을 클릭
하고 드래그하여 모델을 만들기만 하면 된다.
선형, 비선형 시스템 모두를 해석 가능.
Simulink 시작하기
라이브러리 불러오기
더블클릭
변경
클릭해서 끌어다 놓는다
자주 사용되는 라이브러리
자주 사용되는 라이브러리
자주 사용되는 라이브러리
Simulink 실행하기
Simulation → Simulation Parameters...
▶
( 실행 )
실습3

자동제어 교재 연습문제 6-14
Ka=50, Kl=50, Kb=0.0706, Ki=10, Ko=50
 Ra=10, J=0.006, n=0.01
 A = 100, N=1.5
