아래 포스팅 들에서도 소개했지만, MATLAB 을 사용하면 다양한 random 변수들을 생성할 수 있습니다.
2011/03/23 - [programming language/MATLAB] - MATLAB random number 생성
2011/03/23 - [programming language/MATLAB] - MATLAB Rayleigh random variable 생성
2011/03/26 - [programming language/MATLAB] - MATLAB Exponential random variable generation
2011/04/06 - [programming language/MATLAB] - MATLAB Bernoulli random variable generation
2011/04/17 - [programming language/MATLAB] - MATLAB binomial r.v. generation
기복적으로 rand, randn, randi, randperm 과 같은 함수들을 제공해 줘서 Uniformly distributed(균일 분포)뿐만 아니라 Normally distributed(정규 분포) 등도 기본적으로 생성 할 수 있습니다.
요즘은 C++ 에서도 기본적으로 정규 분포 생성 함수 등을 제공해 주지만 예전에는 정규분포 random variable을 생성하려면 균일 분포를 사용해서 함수로 만들어 사용하곤 했습니다.
2012/08/26 - [컴퓨터일반] - C++11 많이 좋아졌네요.
그러다 보니 MATLAB 에서 정규분포를 기본적으로 제공해 주는 건 큰 메리트로 느껴지던 시절이 있었습니다.
MATLAB 에서는 Statistics Toolbox 를 사용하면 좀더 다양한 분포들을 아주 쉽게 생성 할 수도 있습니다.
그런데 이런 random variable 들도 사실은 그리 random 한 것만은 아닙니다.
일단 이해를 위해 MATLAB 을 실행하고 다음과 같이 command window에 작성해 보죠~
아래 코드는 간단하게 현재의 시간과 3 × 3균일 분포를 만드는 코드 입니다.
>> datestr(now), a=rand(3)
결과는 이렇습니다.
이제 MATLAB 을 껐다가 다시 실행 시키고 위와 똑 같은 코드를 다시 실행해 보죠~ 아래에 그 결과를 보면 시간은 분명히 달라졌는데 rand() 함수의 결과가 동일하죠?
다른 프로그래밍 언어들을 접해 보신 분들은 대부분 아시겠지만, 프로그래밍 언어에서의 random variable 값들은 seed 에 따라 생성 되게 됩니다.
MATLAB 에서 random number generation 을 Control 하는 함수로 rng 라는 함수가 있습니다.
Command Window 에 rng 라고 타이핑 하면 현재의 seed 상태를 알 수 있습니다. default 세팅은 아래와 같습니다.
>> rng
ans =
Type: 'twister'
Seed: 0
State: [625x1 uint32]
seed 값을 설정할 때 보통 시간에 따라 변화하도록 설정하곤 하는데~ MATLAB 에서는 다음과 같이 설정하면 시간에 따라 seed 값이 변화하도록 할 수 있습니다.
rng('shuffle')
seed 를 처음 상태로 되 돌리기 위해서는 rng('default') 라고 해 주면 됩니다.
그럼 이제 MATLAB 을 껐다가 다시 켜고~ rng('shuffle') 을 한 후에 위에서 사용했던 명령어들을 다시 실행해볼까요?
확인을 위해 MATLAB 을 재 시작 시키고 똑같이 발생 시켜 보죠~
이젠 rand() 함수의 결과가 바뀌는 것을 확인 할 수 있죠~
만약 rng('shuffle') 이라는 코드를 MATLAB 실행 할 때마다 넣어주는 게 불편하다 하시는 분들은 아래 글 참조하셔서 startup 파일에 rng('shuffle') 을 넣어준다면 좀더 편하게 사용할 수 있을 겁니다.
2013/09/30 - [programming language/MATLAB] - MATLAB 시작 폴더 변경 및 startup.m 파일 설정
'programming language > MATLAB' 카테고리의 다른 글
MATLAB Combination 구하기 nchoosek (0) | 2014.06.19 |
---|---|
MATLAB Figure 창 그림으로 저장 하기 saveas (2) | 2014.06.18 |
Matlab Sample Rate Conversion (0) | 2014.06.09 |
MATLAB atan(), atan2() (0) | 2014.06.07 |
구글 트랜드로 알아본 MATLAB의 관심도 (0) | 2014.05.04 |
MATLAB 다각형 내부의 점들 찾기 inpolygon (8) | 2014.05.01 |
MATLAB Communication Systems Reference Curves (0) | 2014.04.29 |
MATLAB PSK(Phase-shift keying) BER simulation (13) | 2014.04.17 |
댓글