2010년 2월 19일 금요일

[Matlab] - 매트랩 랜덤함수

매트랩은 랜덤함수가 많은 편인대... help를 쳐봐도 머가먼지 알수가...

그래서 쓸때마다 하나하나 정리를ㅋㅋㅋ 앞으로는 내 블로그를 보면 어떤 랜덤함수를 쓰면 좋을지 알수가ㅋㅋㅋ


1. rand(m,n)

우선 rand(m,n)제일 간단한거

만들어지는 랜덤수의 범위는 [0,1]이고 m*n개만큼 만든다

랜덤수는 평균분포(Uniformly Distributed)에 의해서 만들어진다( X ~ U(0,1) )

즉 rand(3,4)를 실행하면 랜덤수 12개를 만든다.

하나 만들구 싶으면 rand(1,1)실행하면 되구ㅋㅋㅋ

 


2.randn(m,n)

mean = 0, variation은 1인 normal distribution 을 따르는 랜덤수를 뽑는다. 즉 X~N(0,1),그렇다 정규분포다!

그럼 X~N(mean, "standard deviation"^2) 은 어떻게 구할까?

그냥 x = mean + "standard deviation" * randn(m,n);

이렇게 구하면 된다



3.randperm(k)

이 함수는 1~k까지의 정수를 랜덤하게 배열해준다

만약에 1~k중에 임의m게의 숫자를 중복되지 않게 뽑고 싶다면 randperm(k)를 하고 그 결과의 1에서 m까지 값을 쓰면 된다.

2010년 2월 7일 일요일

[C++] - struct와 class의 차이점

이거 아마 C++초보라면 잘 모르는 문제일텐데...

struct와 class는 개발자 입장에서 봤을때 차이가 없는거나 마찬가지이다.
다만 메모리 공간까지 깊게 들어간다면 class와 struct는 조금의 차이가 있긴하다...(하지만 저는 잘 모릅니다....ㅠㅠ)

class는 함수도 만들수 있고 operator도 만들수 있고 그러지 않냐고 반문하시는 분들이 있을텐데...
struct에도 똑같이 함수고 operator고 선언이 가능하다. 그 문법은 class의 문법과 똑같다(당연히 이건 C++에 한해서다. 다른언어에선 class와 struct가 다를수 있다)
struct에도 변수는 public private protect로 나누어진다.

다만 여기서 단 한가지 obvious한 차이점을 얘기하자면....
....
....
struct에서 public private protect라고 안하고 변수를 선언하면 변수는 public변수가 되고(즉  default가 public이란 얘기)
class에서 그냥 변수를 선언하면 변수는 private변수가 된다(즉 default는 private란 얘기)

2010년 2월 5일 금요일

[Matlab] - 각종 Matrix 만들기

이번 글에서는 매트랩에서 함수로 만들수 있는 각종 Matrix에대해서 소개하려 합니다.

1.  A = zeros(n,m)
    말 그대로 모든 element가 0인 매트릭스를 만듭니다.
    참고로 A = zeros(n) 과 A = zeros(n,n)의 결과는 같습니다.


2.  A = ones(n,m)
     말 그대로 모든 element가 1인 매트릭스를 만듭니다.
     참고로 A = ones(n) 과 A = ones(n,n)의 결과는 같습니다.


3.  A = eye(n)
     이 함수는 왼쪽 위부터 오른쪽 밑까지만 1이고 나머지는 다 0인 n*n Matrix를 만들어 줍니다.
     즉 A = eye(3) 의 결과는
     A = 1 0 0
           0 1 0
           0 0 1
     이 되는거죠.



오늘은 여기까지 하고 나중에 더 소개해보도록 하겠습니다.~^^

[Matlab] - 다항식 계산 함수들

우선 설명해야 하는건:
매트랩에서 다항식(1차)을 표시할때는 계수만 표시함으로서 끝낼수 있는데
얘를 들어서 p = [1,7,9,8,3]; 이라면 p가 표시하고 있는 다항식은
y = f(x) = 1*x^4 + 7*x^3 + 9*x^2 + 8*x^1 + 3;
이 된다.

그럼 이걸 이해한다 하고 뒤의 함수들을 설명하겠다.


1.    y = ployval(p,x);
       말그대로 y = f(x)를 구한다. 얘를 들어 p = [1,3,10]이고 x=3일때 y = polyval(p,x)를 실행시킨다면
       y = 1*3^2 + 3*3^1 + 10 = 28
       이 된다.


2.    y = roots(p);
       이 함수는 방정식 y = f(x) = 0 의 근을 구한다. 근이 여러게 있으면 모든근을 다 구하고(솔직히 모든 근          을 다 구할수 있다고 생각하지는 않지만...이걸로 모든근을 다 구할수 있으면 어떤방정식이든 다 풀수          있다는 얘기인데...상식적으로 모든 방정식을 다 푼다는건 불가능한 얘기 아닌가!) 복소수 근이 있다면          복소수근도 구한다.


3.    poly2str(p,'x');
        말 그대로 다항식 p를 써준다. 얘를 들어 p = [1,3,10]이고 poly2str(p,'x')를 실행시키면
        x^2 + 3 x + 10
        가 나온다.


4.     q = polyder(p);
         다항식 미분함수이다. 당연히 결과도 하나의 다항식이어야 한다. 얘를 들어 p = [1,3,10]이고 이 식을 미분한다면(즉 q = polyder(p) 를 실행한다면)
         q = [2,3]
         이 나온다. (당연히 1*x^2 + 3*x + 10 을 미분하면 2*x + 3 이 나온다)