octave
Octave Wrokshop
Windows
프로그램에서
octave
아이콘을
연속적으로 두번클릭하면 Octave의
명령창(command
window)이
열린다. >>
혹은
ㅁ 모양의 프롬프트를 화면에 표시한다.
그러면
화면에서 명령을 수행할수 있다. Matlab
프롬프트에서
addpath
workingsubdirectory 를
입력하고 workingsubdirectory
에서
작업한 파일을 저장하고 Matlab
에서
수행하면 된다.
그렇지
않으면,
Matlabrc.m 파일을
고치면 연구히 쓸수 있따. 프롬프트에서
diary
filename 하면
그래픽을 재외한 모든입출력 파일이 filename에
저장된다.
이것은
택스트 파일이다. diary
off 하면
저장을 중지한다. diary
on 하면
다시 filename에
다시 저장한다. save
filename 하면
사용한 모든변수를 filename.mat에
저장한다. save
filename varlist 하면
변수 varlist
를
파일 filename.mat
에
저장한다. load
filename 하면
filename.mat
에
저장된 모든 변수를 불려 들인다. Diary
로
저장된 파일은 텍스트 파일이므로 편집이 가능하나 load
명령어를
싸용할수 없으며,
load로
저장된 파일을 편집할수 없다. 행령의
원소들은 행으로 입력한다. 같은행의
원소들은 공백이나 쉼표로 구분한다. 행의
구분은 세미콜론(;)
이나
Enter키로
구분한다. 전체
원소를 대괄로([
])로
둘러 쌈. 예를
들면, x=log(2)를
입력하면,
출력형식; Matlab
에서
사용하는 행렬의 연산자는 다음과 같다. + 덧셈 A
=[1 2 3]; B=[4 5 6] ; A+B => [5, 7 9] - 뺄셈 A
=[1 2 3]; B=[4 5 6] ; A+B => [5, 7 9] * 곱셈 A
=[1 2 3]; B=[4 5 6] ; A+B => [5, 7 9] ^ 거듭제곱 ' 전치 \ 왼쪽나눗셈 / 오른쪽
나눗셈 . 원소별연산 .*
: 벡터나 행렬에서 연산을 원소별로 곱한다.
, .^ ./ >>
A=[1 2 3;4 5 6]
A
= 정방행렬의
역행렬을 구하는 방법은 다음과 같다. 원소별
연산의 거듭제곱: >>
inv(A).^2
eye(n):
n x n 단위
행렬(Identity). eye(m,n):
m x n 단위
행렬. eye(size(A)):
행렬
A와
차원이 같은 단위 행렬 zeros(n):
모든원소가
영인 n
x n 행렬. ones(n):
모든원소가 1인
nxn
행렬 ones(n),
ones(m,n), ones(size(A))등도
위와 유사하게 정의됨. rand(n):랜덤행렬 Matlab에서는
여러가지 방법으로 임의의(Random)
숫자를
생성한다.
명령어
rand
는
0
과
1
사이의
임의의 숫자가 균일하게 :
연산자(범위
연산자)MatLab
사용법
차례
1.기본사항:
예를
들면;
>>
2*3
ans = 6
와
같은 결과를 얻는다.
그리고
Matlab를
끝내기 위해서는 quit
or exit 를
입력하고 Enter키를
치면된다.
2.
경로(Path)
4.
기본Matlab의
명령어
A=[1
2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
x=log(2)
x = 0.69315
와
같이 결과가 나온다.
예를
들면,
pi
ans = 3.1416
결과가
나오고,
format
long; pi
ans = 3.14159265358979
와
같은 결과가 나온다.
또한
format
short e; pi
ans = 3.1416e+000 이고
format
long e; pi
ans =141592653589793e+000
이다.
다음은
곱셈에 관하여 살펴보자.
1 2 3
4 5 6
>>B=[1
2; 3 4; 5 6]
5.
내장
행렬 함수
>>
E=eye(5)
>>
E=eye(4,5)
>>E=eye(size(A))
>>O=zeros(4)
분포된
원소를 가자는 행렬을 생성하고,
randn 는
정규분포,
즉
평균이 0이고,
편차가
1인
Gaussian
분포를
가지는 행렬을 만든다.6.
Vector 와
행렬의 조작
열벡터의
결합
다음 명령의 의미를
알아보라.
>>
A(I,j), A(:,j), A(j:k, : )
, A(j:k, m:n), A(j:k,m)
관계연산자
A<B, A>B, A<=B, A>=B, A==B, A~=B
등이 있으며, 원소별로 비교하여 참이면 1, 거짓이면 0 값을 원소의 위치에 되돌려 준다.
~=
not equal !=
~ not
>>x
=[1 4 7 -2 1];
>> y=[3 1 7 -3 1];
>> x>y
>>
x<y
>>(x>3)&(x<9)
>> ~(x>3)
for …. end
while …. end
if elseif else … end
가 있다. 다음예제을 보고 생각하여 보아라.
예1
>>
for x=0:0.5:2;
y=exp(x);
[x y]
end
>>format
rat %<-octave에서는 지원하지 않음
rats
>>for
m=1:4;
>> for n=1:4
>> A(m,n)=1/(m+n-1);
>>
end
>> end
A
A =
1 1/2 1/3 1/4
1/2 1/3 1/4 1/5
1/3 1/4 1/5 1/6
1/4 1/5 1/6 1/7
예3
>>n=1;
>> while prod(1:n) <=100000
n=n+1;
end
>> n
예4
>>for
m=1:4
for n=1:4
if m==n
B(m,n)=5;
elseif abs(m-n)==1
B(m,n)=1;
end
end
end
Matlab를 이용하면 쉽게 2차원 3차원 그래프를 그릴수 있다. Matlab 창에서 demo 를 이용하면 Matlab의 다양한 그래픽 기능을 볼수 있다. 여기서는 간단한 2차원 그래프를 그리는 방법에 대하여 알아 보자.
Matlab 명령어 plot 은 기본적인 그래프를 그리는 데 사용되며, 입력 자료에 따라 자동적으로 축의 배율을 설정하여 그래프를 그려 준다. 구간[-4, 4] 에서 함수 y=cos x 의 그래프를 그리기 위하여 다음 명령어를 사용하면된다.
x= -4:0.05:4;
y=cos(x);
plot(x,y)


위에서 본 바와 같이
plot(x,y)는
두개의 인수 x,y에
대하여 앞의 인수를 x축으로,
뒤의
인수를 y축으로
지정하여 그래프를 작성한다.
plot을
사용하여 그래프를 작성한후 다음명령들을 사용하면 그래프의 제목,
축의
이름,
눈금
격자 및 그래프에 대한 설명등을 추가 할수 있다.
title: 그래프의 제목을 붙여 준다.
xlabel:x축에 축의 이름을 붙여준다.
ylabel:y축에 축의 이름을 붙여준다.
text : 지정한위치에 원하는 글을 표시해준다.
grid : 눈금격자(grid line)들을 그래프에 나타내 준다.
다음을 실행하면 아래 그림을 그릴수 있다.
x=-3:0.05:3;
y=cos(2*x).*log(x+4);
plot(x,y)
xlabel('x-axis');ylabel('y-axis')
title('y=cos(2x)log(x+4)')
grid
서로다른 자료들을 사용하여 여러 개의 그래프를 그릴 때 서로 구별할필요가 있다. 이때 사용가능한 선과 점의 종류는 다음과 같다.
.: 점(point)
+: Plus
*: star
o:원
x: x-표시
-:실선
--:단선
: : 점선
-. :일점쇄선(dashed dot line)
@:점
스타일
-@:점과
선
^:
L:
";title;":
"title"만들기
+, *, o ,x:점
스타일
Number Gnuplot
colors (lines)points style
1 red
*
2 green +
3
blue o
4 magenta
x
5 cyan house
6 brown there exists
색깔도 여러가지가 있다.
g:green r,b,g,b c, w, m
r:red
…..
구간 [0, 4pi] 에서 함수 y1=sin x 는 실선, y2=cos x 는 점선으로 그래프를 그리려면 다음과 같다.
text의 첫번째 숫자는 x좌표를 두번째 숫자는 y 좌표를 의미한다.
x=0:0.05:4*pi;
y1=sin(x);
y2=cos(x);
y3=sin(x)*cos(x);
y4=sin(x)+cos(x);
plot(x,y1,'g-',x,y2,'r:')
text(2.8,0.5,'sin(x)')
text(11.8,0.5,'cos(x)')
title('sin(x)와
cos(x)의
그래프')
plot
(x, y, "@12", x, y2, x, y3, "4", x, y4, "+")
t
= 0:0.1:6.3;
plot (t, cos(t), "-;cos(t);", t, sin(t),
"+3;sin(t);");

M-파일
Matlab 명령창에서 사용자가 한 줄짜리 명령을 입력하면 Matlab은 그 명령어를 처리하여 결과를 모니터 화면에 표시한다. Matlab의 가장큰 특징은 M-파일을 사용할수 있다는 점 인데 이는 많은 명령들을 파일내에 저장했다가 동시에 실행시킬수 있게 해준다. 여기서 'M-파일'은 메크로 파일(macro file)의 약자이다. 이러한 M-파일들은 일반적인 문서편집기나 워드프로세서를 사용하여 작성할수 있으며, 주의할 점은 파일의 확장자는 '.m'이어야 한다. 그리고 텍스트나 아스킬파일로 저장하여야 한다.
먼저 간단한 예를 만들어 보자. 만일 'test1.m'파일이 다음과 같은 내용을 포함하고, Matlab경로에 있는 디렉토리에 저장하였다고 하자.
x=(0:0.2:1)';
y1=sin(x);
y2=cos(x);
[x y1 y2 y1-y2]
ans =
0
0 1.0000 -1.0000
0.2000 0.1987 0.9801 -0.7814
0.4000
0.3894 0.9211 -0.5316
0.6000 0.5646 0.8253 -0.2607
0.8000
0.7174 0.6967 0.0206
1.0000 0.8415 0.5403 0.3012
input
는
M-파일
작성시 유용하게 쓰이는 명령이다.
input을
M-파일에
사용하면 M-파일
실생중에 입력이 가능하다.
예를
들어
y
= input('y=');
을
포함하고 있는 어떤 M-파일을
실행하면,
y=
를
화면에 나타내고,
키보드로부터
입력이 될때까지 기다리다가,
값이
입력되면 입력된값을 변수 y로
기억하고 있다.
fprintf
Matlab 명령어 fprintf는 데이터출력 형식을 지정하는데 많이 사용되며, 자주 사용하는 사양은 다음과 같다.
\n 새로운 줄
%e 지수표시법
%f 부동점표시법
다음예를 들어 보자.
x=pi;y=pi;z=pi;
eval
명령어 eval은 함수이름을 인수로 사용하여 문자 메크로 기능을 수행하는 함수이다. eval(f)라고 입력하면 f에 해당하는 함수를 실행한다.
f='a*sin(x)';
a=2; x=5;
eval(f);
ans =
-1.9178
polyval
x=c 에서 다항식 p(x)=a_0x^n+a_1x^{n-1}+…+a_n 의 값을 계산하기 위하여 다음 Matlab 명령어를 수행하면 된다.
p=[1 0 3 2 1];
polyval(p,3)
ans =
115
polyfit
주어진 (n+1)점, (x_1,y_I), I=1,2,….n+1을 지나는 n차 다항식은 유일하다. 이러한 다항식
p_n(x)는 Matlab명령어는 polyfit를 사용하여 쉽게 구할수 있다.주어진 4점 (1,3), (3,1), (5,4), (6,-2)를 지나는 3차 다항식 p(x)를 구하기 위해서는 다음 명령어를 사용하면 된다.
f='a*sin(x)';
a=2; x=5;
eval(f);
ans =
-1.9178
x=[1 3 5 6];
y=[3 1 4 -2];
p=polyfit(x,y,length(x)-1)
p =
-0.6250 6.2500 -17.8750 15.2500
xx=1:0.05:6;
yy=polyval(p,xx);
plot(x,y,'o', xx,yy)

diag, tril, triu
등도 있다. 이것은 대각행렬, 하삼각행렬, 위삼각행렬 등이다.
A=[ 1 3 4 2; 4 7 6 3; 9 0 2 4; 8 3 1 4]
A =
1 3 4 2
4 7 6 3
9 0 2 4
8 3 1 4
라 하자. 그러면,
diag(A)
ans =
1
7
2
4
이고,
diag(diag(A))
ans =
1 0 0 0
0 7 0 0
0 0 2 0
0 0 0 4
이다.
tril(A,k) 는 k번째 대각원소 아래를 원소로 하는 행렬 A와 크기가 같은 하삼각행렬을 구성한다. 여기서 k=0 이면 주 대각원소를 나타내며, k>0이면 주대각원소 위를, k<0이면 주대각원소 아래를 의미한다.
tril(A,1)
ans =
1 3 0 0
4 7 6 0
9 0 2 4
8 3 1 4
tril(A,-1)
ans =
0 0 0 0
4 0 0 0
9 0 0 0
8 3 1 0
triu(A,k) 는 k번째 대각원소 위를 원소로 하는 행렬 A와 크기가 같은 상삼각행렬을 구성한다. 여기서 k=0 이면 주 대각원소를 나타내며, k>0이면 주대각원소 위를, k<0이면 주대각원소 아래를 의미한다.
triu(A,1)
ans =
0 3 4 2
0 0 6 3
0 0 0 4
0 0 0 0
triu(A,-1)
ans =
1 3 4 2
4 7 6 3
0 0 2 4
0 0 1 4