본문 바로가기

Matlab

Matlab 기본 문법 -1

Matlab 기본 문법에 대해 공부하자

 

참조: https://matlabacademy.mathworks.com/

 

Self-Paced Online Courses - MATLAB & Simulink

Learn MATLAB for free with MATLAB Onramp and access interactive self-paced online courses and tutorials on Deep Learning, Machine Learning and more.

matlabacademy.mathworks.com

matlab 은 프로그래밍 언어와 비슷하게 if, for, while등으로 흐름제어를 할 수 있는거 같다.


1. 명령 입력하기

이 파트에서는 특별히 기록할 만한것 없이 기본적인 연산에 대해 공부한다.

다만 여기서 세미콜론이 다른 프로그래밍 언어와 다르게 쓰이는데 matlab 언어에서는 세미콜론은 붙여도, 안붙여도 그만이다.

 

세미콜론(;)

 => 세미클론을 붙였을 경우 연산결과가 명령창에 출력된다.

 => 세미클론을 붙이지 않았을 경우 연산결과는 출력되지 않고 컴퓨터에 내장된다.

 

save, load 명령어

=> save 명령어는 Workspace에 저장되어있는 변수들을 해당 지정한 파일(?)에 저장한다

  ex) save workspace.dat

=> load 명령어는 지정한 파일(?)에 저장되어있는 변수들을 불러온다.

  ex) load workspace.dat

 

clc 명령어

=> 명령창을 clean 한다.

 

추가 작업

=> 파일 로 부터 데이터를 load, save때 특정 변수만 불러 올 수 있다.

ex) save myData.dat arg

ex) load myData.dat arg


2. 내장 함수와 사용하기

내장 함수들은 기본적인 sqrt, sin, cos 등 사용 가능하다. 이건 필요할 때 마다 찾아서 사용하면 될듯..

 

format 으로 변수의 정밀도 제어가 가능하다.

ex) format long

      format short

 


3. 벡터와 행렬

 

행렬 선언

matlab 에서는 대괄호를 사용해서 여러 요소를 가지는 행렬을 만들 수 있다.

ex) x = [ 3 5 ]

       result : x 는 1 x 2 를 가지는  배열

 

세미콜론(;)

대괄호 안에 숫자를 세미콜론으로 구분하면 열 벡터가 생성 된다.

ex) x = [ 1 ; 3]

        result: x = 2 x 1을 가지는 배열 

 

공백과 세미콜론을 활용하면 여러행과 뱉더를 만들 수 있다

ex) x = [5 6 7; 8 9 10]

         result:   x = 2 x 3

 

: 연산자

길이가 긴 벡터일 경우 일일이 치는 것은 실용 적이지 않다. : 연산자를 사용하여 시작점과 끝점만 지정하면

균일하게 구성된 벡터를 구할 수 있다.

ex) y = 5:8

        result: y = 5, 6, 7, 8

 

연산자에 특정 간격도 정할 수 있다.

ex) x = 20:2:26

         result : x = 20, 22, 24,

 

linespace 함수

만들고자 하는 벡터에서 각 요소간 간격 뿐만 아니라 원하는 요소의 개수를 이미 알고 있는 경우

linspace 함수를 사용할 수 있다.

linspace(시작 숫자, 끝 숫자, 갯수)

 

전치 연산자

전치 연산자는 행과 열을 뒤집는다.

ex) x = [1 2 3; 4 5 6; 7 8 9]

      x = x'

      하였을 때 결과 

      x = 1 2 3

            4 5 6

            7 8 9

     x' = 1 4 7

            2 5 8

            3 6 9

 

난수 연산자 (rand)

rand 연산자는 하나의 숫자만 입력하면 행과 렬이 같은 행렬을 만들고 두개의 숫자를 입력하면 비정사각 행렬을 만들 수 있다.

ex) x = rand(3) 

      x = 3 x 3 의 난수

      x = rand(4,2)

      x = 4 x 2 의 난수

 

요소가 0으로 할당해주는 연산자 (zeros)

행렬을 만들때 모든 요소를 0으로 할당하여 만들어 준다.

ex) x = zeros(5,2)

 

사이즈 함수를 활용하여 기존 행렬의 크기를 구해 만들 수도 있다.

ex) x = zeros(5,2)

      y = rand(size(x))

      result:  y는 x의 사이즈를 가지는 난수 행렬 생성


3. 배열의 요소를 참조하고 배열 수정하기

 

행렬의 요소를 괄호를 통해 참조할 수 있다.

ex) x = data(5,3)

       result: data 행렬의 5행 3열의 데이터를 반환

 

end 키워드

end 키워드를 활용하여 행렬의 마지막 인덱스를 참조 할 수 있다.

ex) x = data(end, 3)

      result: data행렬의 마지막 행의 3번쨰 열을 x에 저장

 

콜론(:) 연산자

콜론 연산자는 해당 차원의 모든 요소를 지정하게 된다.

ex) density = data(:,2)

       result: data 행렬에서 2번째 열 전부 인덱싱 한다.

 

콜론 연산자로 특정 범위를 참조 할 수 있다.

ex)  volumes = data(:,end-1:end)

       result 마지막 2개의 행을 인덱싱 하는 배열

 

단순히 순서로 인덱스 하여서도 특정 요소를 뽑아 낼 수 있다.

ex) x = data(5)

      result: data의 5번째에 있는 요소의 값을 가진다.

또는 특정 범위를 지정 할 수 있다.

 ex) x = data(2:5)

       result: x는 2번째 에서 5번째의 행렬 요소를 가지는 행렬

 

굳이 연속적이지 않아도 되게 뽑기

v = [density(1), density(3), density(6)]

 

행렬의 값 변경하기

ex) data(1,end) = 0.5

      result: 1행의 마지막 열의 요소 값을 0.5로 변경

 

      data(:,3) = data(:,4)

      result: 데이터 3열의 값을 4열의 값으로 변경


4. 배열 계산하기

 

배열의 값을 계산 할때 그냥 더해도 된다 ㅎ_ㅎ

ex) r = v1+ 1

      result: v1 모든 요소에 다 1씩 더해진 값이 r에 저장 된다.

 

두 백터도 동일한 크기라면 + , - 정도 되는듯하다.

 

max 연산자

배열에서 가장 큰 최댓값을 구할 수 있다.

ex) vm = max(va)

       result: vm 은 va 행렬 중 최댓값을 가진다.

 

max 함수에서 백터의 최댓값과 인덱스 값을 확인 할 수 있다.

ex) [xMax, idx] = max(data)

       result: xMax는 최고 값, idx는 xMax의 index

 

round 연산자

반올림한다.

 

. * 연산자

곱하기는 그냥 곱하면 에러가 뜨고 요소별로 곱해야 하므로 .*를 사용해야한다.

ex) mass = density .* va

   

x = [1 2;3 4;5 6; 7 8].*[1;2;3;4]

이렇게 하였을 경우도 각 요소별로 곱셈이 된다.

 


4. 함수에서 여러 개의 출력값 구하기

 

size 함수

배열에 size 함수를 사용할 경우 각 행과 열의 사이즈가 나온다.

ex) dsize = size(data)

       result: data 가 3 * 4 일 경우 dsize의 값은 [3 4]

 

대 괄호를 사용하여 각 행과 열의 크기 값을 변수에 저장 할 수 있다.

ex) [xrow, xcol] = size(data)

       result: xrow 는 3, xcol 는 4

 

물결표 연산자

물결표 연산자를 사용하여 특정 출력 값을 무시 할 수 있다.

ex) [~,ivMin_Index] = min(v2)

       ivMin = v2(ivMin_Index)