獨斷論

기본적인 명령어들 (Matlab 사용법 5) 본문

과학과 기술/Matlab

기본적인 명령어들 (Matlab 사용법 5)

부르칸 2015. 4. 9. 12:49

기본적인 명령어들 (Matlab 설명서 5)


여기서는 기본적인 간단한 명령어들이나 개념들을 지루하게 열거해보도록 하겠다.


ans
이건 명령어라기보다는 변수명이라고 하는것이 편하겠다. 바로 실행한 결과를 저장해두는 곳.


clc

command window의 내용을 모두 지워버린다. 깨끗하게


clear all

Workspace에 있던 모든 변수를 지워버린다. 일종의 변수 초기화...


줄바꿈

편집기에서 줄바꿈을 하고자 할때는 점을 세 개 찍고 엔터하면 한 줄로 인식한다.

s = 1 - 1/2 + 1/3 - 1/4 + 1/5 ...
      - 1/6 + 1/7 - 1/8 + 1/9;


mystring = ['Accelerating the pace of ' ...
            'engineering and science'];


실행중지

Script를 실행시켰는데 무한루프에 빠졌다면 Command Window에서 Ctrl+C 또는 Ctrl+Break를 누르면 된다. ...

애플 맥 사용자는 Command + . (the Command key and the period key)를 사용한다. 


변수병 규칙

대문자와 소문자를 구별한다. 특수문자를 사용하면 안된다. 단 밑줄( _ )은 예외. 숫자로 시작해서는 안된다. 내장명령어를 변수로 사용하면 안된다. 만약 자기가 사용하고자 하는 변수명이 내장명령어로 들어있는지 보려면 아래와 같이 하면 된다. 



>> exist fft
ans =
     5

>> which fft
built-in (C:\Program Files\MATLAB\R2014b\toolbox\matlab\datafun\@logical\fft)  % logical method


>> exist NameDoesNotExist
ans =
     0


fft는 이미 존재하는 함수 또는 내장명령어이므로 변수명으로 사용하면 안되고

NameDoesNotExist라는 이름은 변수명으로 사용해도 괜찮다. ans의 값이 0이면 사용해도 괜찮다는 뜻이다.


블록대각행렬(block diagonal matrix)

문법은 아래와 같다.

output = blkdiag(a, b, c, d, ...)

위에서 a, b, c, d들은 행렬이다.


대각행렬(diagonal matrix)

문법은 아래와 같다.

D = diag(v)

x = diag(D)

위 두 명령의 차이는 아래 예를 보면 쉽다. 

v라는 벡터를 만들어 그 원소를 이용하여 대각행렬을 만들었고

>> v = [2 1 -1 -2 -5];
>> D = diag(v);
>> D
D =
     2     0     0     0     0
     0     1     0     0     0
     0     0    -1     0     0
     0     0     0    -2     0
     0     0     0     0    -5

이제 아무행렬이나 만들어 대각선 원소만 뽑아내보자

>> A = rand(5, 5)
A =
    0.1419    0.6557    0.7577    0.7060    0.8235
    0.4218    0.0357    0.7431    0.0318    0.6948
    0.9157    0.8491    0.3922    0.2769    0.3171
    0.7922    0.9340    0.6555    0.0462    0.9502
    0.9595    0.6787    0.1712    0.0971    0.0344

>> x = diag(A)
x =
    0.1419
    0.0357
    0.3922
    0.0462
    0.0344


단위행렬(Identity matrix)

Identity의 첫글자 I를 eye로 썼다. ㅋㅋ

>> I = eye(5)
I =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1


linspace

일정한 간격의 벡터를 만든다.

linspace에 들어가는 숫자는 차례대로 처음값 마지막값 숫자갯수이다.

>> linspace(10, 20, 5)
ans =
   10.0000   12.5000   15.0000   17.5000   20.0000


>> linspace(10, 15, 4)
ans =
   10.0000   11.6667   13.3333   15.0000


meshgrid

모든 가능한 조합으로 짝을 만들어 준다. 3차원 그래프 그릴때 유용하다.

X가 -2에서 2까지 그리고 Y가 -2에서 2까지일때 z = x exp(-x^2 - y^2)의 그래프를 그리고자 한다면 다음과 같이 한다.

>> [X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);
>> Z = X .* exp(-X.^2 - Y.^2);
>> surf(X, Y, Z)


일행렬

모든 원소가 1일 행렬을 만든다.

>> ones(4,5)
ans =
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1


난수발생

5x3인 난수행렬을 만들려면 아래와 같이 한다.

>> rand(5,3)
ans =
    0.5472    0.2543    0.1966
    0.1386    0.8143    0.2511
    0.1493    0.2435    0.6160
    0.2575    0.9293    0.4733
    0.8407    0.3500    0.3517

>> rand(5)
ans =
    0.8308    0.7572    0.0540    0.5688    0.7943
    0.5853    0.7537    0.5308    0.4694    0.3112
    0.5497    0.3804    0.7792    0.0119    0.5285
    0.9172    0.5678    0.9340    0.3371    0.1656
    0.2858    0.0759    0.1299    0.1622    0.6020


영행렬

모든 원소가 0인 행렬을 만든다.

>> zeros(5)
ans =
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

>> zeros(5,3)
ans =
     0     0     0
     0     0     0
     0     0     0
     0     0     0
     0     0     0


행렬 합치기

만약 아래 두 행렬을 합치려고 한다고 할때

A =                       B =
     1     2                   5     6
     3     4                   7     8

밑으로 합치려면 아래와 같이 한다.

>> C1 = cat(1, A, B)
C1 =
     1     2
     3     4
     5     6
     7     8

옆으로 합치려면 아래와 같이 한다.

>> C2 = cat(2, A, B)
C2 =
     1     2     5     6
     3     4     7     8


행렬을 반복적으로 합치기

같은 행렬을 계속 반복적으로 합칠수도 있다. 


 1





 >> A = [8 1 6; 3 5 7; 4 9 2]
A =
     8     1     6
     3     5     7
     4     9     2

 2











 >> RA = repmat(A, 3, 2)
RA =
     8     1     6     8     1     6
     3     5     7     3     5     7
     4     9     2     4     9     2
     8     1     6     8     1     6
     3     5     7     3     5     7
     4     9     2     4     9     2
     8     1     6     8     1     6
     3     5     7     3     5     7
     4     9     2     4     9     2

 3









 >> RA = repmat(A, 2, 1)
RA =
     8     1     6
     3     5     7
     4     9     2
     8     1     6
     3     5     7
     4     9     2

 4





 >> RA = repmat(A, 1, 2)
RA =
     8     1     6     8     1     6
     3     5     7     3     5     7
     4     9     2     4     9     2

위 1번 script에서 A 행렬을 정의했고

2번에서 A 행렬을 3x2 크기로 반복하여 합쳤다.

3번에서 2x1 크기로 반복하여 합쳤다. 4번은 1x2로 합쳤다.


벡터의 크기

>> a = [1 2 3 4 5];
>> length(a)
ans =
     5

원래 벡터의 크기가 아니라 행렬의 크기 중에 큰것을 출력한다. 


행렬의 크기

>> RA
RA =
     8     1     6     8     1     6
     3     5     7     3     5     7
     4     9     2     4     9     2

>> size(RA)
ans =
     3     6


Comments