MATLAB 뿌셔뿌셔 03. 행렬 다루기 - 고급

써니니(Sunny)·2020년 9월 4일
0

MATLAB 뿌셔뿌셔

목록 보기
3/9
post-thumbnail

목차
1. Add, delete, permute all or some of the vectors and matrices
2. Sort and search matrix elemtns
3. Change the shape of the matix
4. Flip, rotate and shift the matrix
5. Manipulate 2D images

  1. 행렬의 추가, 삭제, 순서바꾸기

    1) 행렬의 원래 사이즈보다 큰 열에 원소를 입력하면 중간에 자동으로 0으로 채워진다.

2) Permutation

ex. column permutation - col자리에 :을 써주고, row 자리에 원하는 인덱스 순서를 써준다.
a(행값,열값) 에서 행값, 열값 자리는 a(1,1), a([1 2], [1 2]) 와 같이 표현될 수 있다.
:기호는 all(row/col)을 의미함을 기억하자!

  1. 행렬의 원소 정렬 및 검색

    1) 배열 sorting
    randperm(정수) = 1 부터 정수까지의 정수를 랜덤하게 배열로 생성해준다.
    sort(배열) = 오름차순으로 정렬해준다
    [el, idx]=sort(배열) = 배열의 원소들을 정렬하고 각각 element와 정렬전 index번호를 알려준다.

    2) 행렬 sorting
    sort(행렬) = column by column 으로 오름차순으로 정렬해준다.
    row-wise sorting은 sort(행렬,2)

    3) pivot sorting
    특정 인덱스행/열을 기준으로 전체 열/행을 정렬하기

    4) sub-array searching
    find(조건문) = 조건을 만족하는 행렬의 원소의 인덱스를 알려준다.

    ex. 어떤 행렬에서 7보다 큰 원소들을 0으로 바꾸기
    방법1.

    방법2. 자주쓰임

    5) 최대 최소

  1. 행렬의 reshape

    1) matrix dimension 바꾸기
    b = reshape(a, 원하는행수, 원하는열수)
    원래 행렬의 원소들을 열방향(위에서 아래로)으로 갯수만큼 짤라서 새로운 dimension을 만들어준다.
    행수와 열수 중 하나만 적고 나머지는 []로 남겨둬도 자동으로 계산해서 만들어준다

    2) Replicate Array
    b = repmat(원하는부분, 원하는 dimension)

    3) Single Indexing
    sub2ind(size(a), 행, 열) = 위에서부터 하나로 세었을때 인덱스 번호를 알려줌
    [r c] = ind2sub(size(a), 10) = 위에서부터 하나도 세었을때 인덱스번호를 넣으면 행과 열번호를 알려줌

    4) Logical Array

    조건에 맞는 원소를 논리 1 과 0으로 대치해서 보여주는 배열

    • 논리적으로 참인 원소들만 새로 어레이로 작성할 수 있다.

    • logical([논리값]) = 해당 인덱스가 참인 값들만 모인 어레이를 작성할 수 있다.

      5) Scalar Expansion
      ones(행,열)로 원하는 dimension을 만들고 스칼라 값을 곱해서 모든 원소가 해당 스칼라값인 행렬을 만들수있다.

      true(행,열)을 이용하면 logical array를 만들수있고, 일부분을 바꿀 수 도 있다.

  1. 행렬 flip, Rotate, shift

flipud(a) = 상하반전
fliplr(a) = 좌우반전
rot90(a) = 오른쪽 90도 회전
rot(a,2) = 원점 대칭
circshift(a,1) = 아래로 한칸 밀기
circshift(a,-1) = 위로 한칸 밀기
circshift(a,[0 1]) = 위아래는 고정, 우측으로 한칸 밀기 (첫번째는 위아래, 두번째는 좌우)
circshift(a, [0 -1]) = 위아래는 고정, 좌측으로 한칸 밀기

diag(행렬) = 대각선 원소를 벡터로 반환
diag(벡터) = 벡터를 대각선으로 가지는 행렬을 만들어줌
triu(a) = 행렬의 대각선 윗부분 원소만 남기고 나머지는 0으로 대치
tril(a) = 행렬의 대각선 아랫부분 원소만 남기고 나머지는 0으로 대치

  1. 응용 - 이미지 조작하기
profile
I am interested in Database Engineering !

0개의 댓글