Search Results for '등간격'

1 POSTS

  1. 2016.01.10 [matlab] 행렬만들기, 일정 간격 벡터 만들기

내가 매틀랩을 처음 다뤄본 것은 대학교 3학년때였다. 신호 프로젝트를 하게됬는데 그때는 매틀랩에대해 이해를 못하고 무작정 뛰어들어서 정말 힘들었던 기억이 난다.

매틀랩에 대한 이해만 한다면 아주 쉬운 프로그램이다. 매틀랩은 연산 체계가 행렬연산으로 되어있다. 모든 것이 행렬로 되어있는 것이다.

일단 기본적으로 행렬을 만드는 법부터 배우고 한단계씩 차근차근 배워가면 쉬울 것이다.

1 행렬 만들기

행렬을 만드는 법은 여러가지가 있는데 다음과 같이 1~5의 요소가 있는 열벡터를 만들려면

a =[1,2,3,4,5] 라고 입력하면 쉽게 만들 수 있다

굳이 콤마(,) 를 붙이지 않고 띄어쓰기만 해도 된다.

그럼 행은 어떻게 넘어가지?

간단하다  다음 행으로 넘어가려면  ; 을 써주면 된다

b = [1,2,3,4,5 ; 5,4,3,2,1] 을 써주면, 2 x 5인 행렬이 만들어진다.

 

; 을 써서 행벡터를 만들 수도 있지만

아까 만든 a 행렬에 '를 붙여서 a' 를 입력해주면 a의 transpose가 된다.

 

하지만 이렇게 직접 쓰다보면 귀찮기도 하고 시간도 오래걸린다.

예를들어, 실제 신호를 다루게 되면 몇만개, 몇십만개 이상의 샘플을 다루게 되는데,

몇만개를 직접 하나하나 입력할 수는 없을 것이다.

다음과 같이  d = 0:1:10 을 입력하면, 0부터 10 까지 1간격으로 나열하라는 명령이 된다.

간격을 내맘대로 설정할 수 있다.  만약 -10부터 20까지 5 간격으로 나누고 싶으면

e = -10:5:20 이라 쓰면 끝. 쉽다. 

 

이런 방법 말고 내가 만약에 0부터 10까지 23개의 요소로 나누고 싶다면?

각 요소 사이의 간격을 굳이 알지 못해도 linspace 라는 함수를 쓰면 할 수 있다.

a = linspace(0,10,23)

0부터 10 까지를 일정한 간격으로 23개요소로 나눈 것을 볼 수 있다.

 

이런 방법을 통해 DSP에서 말하는 샘플링(Sampling)을 할 때 쓸 수 있다.

내가 받은 데이터가 125Hz 로 샘플링 되어있다면, 그 데이터에 맞는 시간 t 행렬을 만들고자 할때,

t = linspce(0,1,125) 

라고 입력하면 1초동안 125개의 샘플을 가진 나의 데이터와 시간 t 행렬을 매칭시킬 수 있다

workspace에  t 를 보면 1x125 의 벡터가 나온 것을 볼 수 있고, 더블클릭하면 일정한 간격으로 늘어나는 것을 볼 수 있다. 

 

1초가 아니라 10초의 데이터라면

t = linspce(0,10,10*125)

라고 써주면 10초동안 10x125개의 샘플이 된다. (*는 곱하기)

 

신호를 샘플링해서 그래프를 나타내는 법은 다음번에 올리도록 할 것이다.