깐우의 세상 만들기

처음 배우는 MATLAB 본문

Book / Study

처음 배우는 MATLAB

깐우 2009. 7. 5. 13:38

매틀랩은 C와 같은 Language가 아니라 툴의 개념을 가진 소프트웨어이다.

희안하게 공대 4년동안 접할 기회가 없었다가 올 여름 유학 준비시 처음으로 접해보고

배우는 중인데 정말 강력한 툴이라는 느낌이 든다.

일단 매틀랩은 기본적으로 행과 열로 이루어진 행렬식을 바탕으로 한다.

단순하게 스칼라라고 생각을 하고 코딩을 한다면 낭패를 보기 쉽다고 한다.

아직까지는 배우는 단계라서 이 말이 썩와닿지는 않지만 나름 재미있는 툴...



일단 프로그램을 시작하면 Current Directory, Command window, Command History

이렇게 세개의 창이 뜬다.

디렉토리창과 히스토리창은 설정이후 별로 사용할 일이 없고

커맨드 윈도우창을 주로 사용한다.

여기서 간단하게 코딩을 하고 결과값을 확인할 수 있지만

이도 역시 M-file을 생성한 이후에는 결과값을 확인할때에만 주로 사용한다.

코딩은 M-file내에서 주로 한다는 말...

그럼 M-file을 생성해 보자.

File->New->M-file

그럼 Editor라는 화면이 하나 더 추가되어진다.

이제부터 본격적인 시작이다.



시작하기에 앞서서 간단한 명령어와 함수들을 알아보자.


help 궁금한명령어 : 궁금한명령어에 대한 설명을 해준다.

lookfor 키워드 : 찾고싶은 명령어들을 찾아준다.

clc : 윈도우 커맨드 창을 깨끗하게 해준다.

clear 변수이름 : 해당 변수를 제거한다. (clear all : 모든 변수 제거)

% : 주석 처리 (C언어에서의 // 기능)
드래그 후 Ctrl+R : 블록 집단 주석 처리
드래그 후 Ctrl+T : 블록 집단 주석 처리 해체

변수이름 = (A:B:C) : 변수에 A부터 C 까지 B 간격 으로 입력
ex) A=1:2:10 =====>A= [1 3 5 7 9]

rand(n,m) : n 형 m 열의 랜덤한 실수들을 발생시킨다.
Uniform Distribution : Data 생성시 사용
randn(n,m)
Normal Distribution : Noise 발생시 사용

변수이름(n,m) : n번째 행의 m번째 열의 값을 불러온다.

변수이름(x:y, : ) : x 부터 y 까지의 행에 있는 모든 값을 불러온다.

rem(A,B) : A를 B로 나눈 나머지를 불러온다. (C언어의 % 기능과 같다)

disp('홀수입니다') : 작은 따옴표 안의 내용을 커맨드 윈도우에 출력한다.
(C 언어의 printf, cout 기능)

cos(A): cosine funtion

sin(A) : sign funtion

exp(A) : 지수 함수(exponential)

plot(x,y) : x축과 y축을 이용한 그래프 출력

stem(x,y) : plot과 비슷하지만 discrete하게 출력을 한다

figure(x) : x를 1, 2, 3 이런식으로 쓰고 plot명령어를 사용하면 해당 그래프의 창을
여러개 띄어준다

hold on : 하나의 창에 여러개의 그래프 결과값을 출력한다.(x의 범위에 주의)

subplot(x,y,z) : 하나의 창에 각각의 그래프를 분할하여 보여준다.

axis([ x축 시작값 x축 끝값 y 축 시작값 y축 끝값] : 그래프의 범위를 조절한다.


이제 간단한 문법을 배워보자.

1.while문 예시
% Until A becomes 100
A=1;
while (A<100)
    A=A+1;
end
A

2. for문 예시
1)
% sum of all items
B=0;
for i=1:100
    B=B+i;
end
B

2)
%Square each items
S=[1:10];
for i=1:10
    S(i)=S(i)^2;
end
S
3. 응용

1) 1~10이 있는 행렬에 짝수항에는 2를, 홀수항에는 3을 곱해보자
% even item times 2, odd item times 3
Y=[1:1:10];
for i=1:10
    if(rem(i,2)==0)
        Y(i)=Y(i)*2;
    else
        Y(i)=Y(i)*3;
    end
end
Y


2) 어떤 행렬에 각각의 항에 10씩 곱해보자.
% in some matrix, each items times 10
A=[1:3 ; 4:6];
for(i=1:2)
    for(j=1:3)
        A(i,j)=A(i,j)*10;
    end
end
A
 
3) sin과 cos의 곱에 1~10을 곱한것 합
% cos(i)*sin(j)*C
C=1:10;
Sum=0;
TotalSum=0;
for(i=1:10)
    for(j=1:10)
        Sum=Sum+C(i)*cos(i)*sin(j);
    end
    TotalSum=TotalSum+Sum;
end
TotalSum