ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. (Matlab) 알아두면 유용한 매트랩, 인덱스(indexing)
    2) Tech 2020. 3. 8. 21:28
    반응형

    안녕하세요!

     

    오늘은 매트랩 벡터의 Indexing(인덱싱)에 대해 이야기해보겠습니다.

     

    인덱싱이란 여러 데이터중 특정데이터에 접근하는것을 의미합니다!

     

    즉, [0, 1, 2, 3, 4, 5]와 같은 행벡터가 있을 때

     

    0번째, 4번째 데이터에 접근 하려할때 indexing을 사용하게됩니다.

     

    매트랩에서 인덱싱의 방법은 크게 3가지가 있습니다.

     

    1. Linear Indexing : 인덱스

     

    2. Row-Column Indexing : 행 인덱스, 열 인덱스

     

    3. Logical Indexing : 조건

     

     

    1. Linear Indexing

     

    매트랩 인덱싱을 예를 통해 알아보겠습니다.

     

    그럼 명령창으로 갑시다!


    clear; clc; 
    x = [5, 4, 10, 2]; 

     

    위와 같이 x를 선언했을 때,

    x의 [5, 4, 10, 2] 각 요소마다 번호(인덱스)가 부여됩니다.

    앞에서 부터 1 2 3 ... 순으로 매겨집니다.

     

    주의!!

    c 배열의 인덱스와 다르게 첫번째 요소의 인덱스가 1로 부여됩니다!!!

     

    * 인덱스 추출 *

    y = x(2) + x(3);    ->    x의 2, 3 인덱스에 해당하는 값을 추출해 더하는 의미

     

    /*

    x(2) = 4, x(3) = 10

    y = 14 가 되겠네요!

    */

     

    * 인덱스 값 변경 *

    x(3) = 11;      ->    x(3) : 10 -> 11로 변경, x = [5, 4, 11, 2]

     

    인덱스 추출 및 변경

     

    + 응용

     

    x = [5, 4, 11, 2] 일때

     

    x([인덱스, 인덱스, 인덱스]) 와 같이 적어주면, 추출된 각 인덱스로 새로운 벡터가 형성됩니다. 

     

    y = x([4,3,2,1]);    ->    y = [x(4), x(3), x(2), x(1)] 즉,  y = [2, 11, 4, 5]  

     

    y = x( [1,1,1]);     ->    y = [x(1), x(1), x(1)] 즉, y = [5, 5, 5]

    y = x(end:-1:1);    ->    x(end), x 맨끝 인덱스에 접근!  y = [2, 11, 4, 5] 

     

    y = x(end -2);      ->    y = 5      

     

    x([1,2]) = 0;        ->      x = [0, 0, 11, 2]

     

    x([1,2]) = [3,7];      ->     x = [3, 7, 11, 2]

     

    인덱스 접근 응용

     

     

    * 인덱스 추가 *

     

    x [3, 7, 11, 2] 의 인덱스를 추가하려면,

     

    x(end + 1) = 7;     ->   end 자리에 +1 한 인덱스에 값을 할당. 즉, x(5)에 7할당 x = [3,7,11,2,7]

     

    x(end + 3) = 5;      ->  x(8)에 5할당 x = [3,7,11,2,7,0,0,5]

     

    x(end) = [];    ->  x(end) 값 [] = 제거

     

    인덱스 추가

     

    오늘은 Linear Indexing을 알아봤습니다!

    오늘도 별건아니지만 도움이 되셨으면 좋겠네요!!

     

    다음에는 행렬의 인덱싱과 연산에대해 알아보겠습니다~~

     

    반응형

    댓글

Designed by Tistory.