MATLAB

MATLAB

[MATLAB] Exponential Random Variable(지수분포)

지난번에 Disctrete RV에서 Binomial과 Poisson 분포에 관해 다뤘다면 이번에는 Continuous RV에서 Exponential RV을 알아보자. What is Exponential Random Varialbe Exponential RV란 한글로 지수분포라고 한다. 사건이 독립적일때, 일정 시간동안 발생하는 사건의 횟수가 포아송 분포를 따르면, 다음 사건이 일어날 때까지 대기시간은 Exponential 분포를 따른다. 즉, 시간에따른 함수이기 때문에 continuous한 형태임을 알 수 있다. 이 분포의 PDF는 이름에서 알 수 있듯이 지수함수적으로 감소하게 되며 CDF는 각각의 PDF를 적분한 형태이기 때문에 증가하는 모양을 보인다. PDF는 다음과 같다. 이제 매트랩을 이용해 PD..

MATLAB

[MATLAB] 이산확률변수(Discrete Random Variable)

확률과 통계학 수업을 하면서 여러 확률모델에 관해 배웠다. 그중 이산적(discrete)인 Empirical PMF을 통해 Binomial RV와 Poisson RV를 비교해 보자. What is Binomial Random Variable? Binomial RV란 고등학교 확률과 통계 수업에서 배우는 '이항분포'와 같은 개념이다. n번의 독립시행중 성공할 확률이 p일 때 갖는 이산확률분포이다. 말로 표현하기에는 와닿지 않으니 바로 PMF를 확인해 보자 위 식을 해석하자면 총 n번 시행 중 성공할 확률 : p, 실패할 확률 : q (=1-p) 일때 성공을 k번, 실패를 n-k번 발생할 때의 확률을 표현한 식이다. 평균 : E[X] = np 분산 : VAR[X] = npq = np(1-p) Binomial..

MATLAB

[MATLAB] 이미지 프로세싱(R, G, B 이진화)

매트랩 비교과 마지막 수업날 교수님께서 이미지 프로세싱에 관해 짧게 말씀 해주셨다. 요즘 핫한 자율주행에서 이용되는 이미지 처리 방식도 매트랩에서 간단하게 구현할 수 있다. 예를들어 자동차 범퍼쪽에 카메라를 달고 도로사진을 찍는다고 가정해 보자. 카메라로 찍힌 화면에는 차선, 앞차, 가로등, 사람 등 수많은 요소들이 보일 것이다. 그중 차선만 골라내도록 이미지프로세싱을 할 수 있다는 얘기를 하셔서 심심하니까 한번 해보자. 문제해결방법 1. 우선 인터넷에서 도로사진을 다운받은 후 매트랩에서 호출한다. %% 이미지 불러오기 I=imread('road.jpg'); imshow(I); 이 사진은 r, g, b가 전부 혼합되어 있어서 곧바로 도로만 구분하기란 불가능 하다. 2. 따라서 해당 이미지에서 r, g, ..

MATLAB

[MATLAB] 신호의 주파수 해석(Fourier Analysis in Frequency Domain)

지금까지 우리는 신호를 시간축에 따른 결과값 즉 time domain관점에서 해석했다. 시간에 대한 해석은 그저 파형이 어떻게 생겼는지 관측만 가능 할 뿐 해당 신호의 물리량 및 에너지를 확인 할 수 없다. 이런 신호를 가공하고 처리하기 위해서는 다양한 방법이 있지만 이번 시간에는 여러 방법중 하나인 푸리에 변환(Fourier Transform)에 관해 이야기 하겠다. 푸리에 변환(Fourier Transform)이란? 특정 신호를 시간에 대한 해석이 아닌 주파수에 대한 해석을 하기 위한 변환과정이다. 즉 시간에 대한 그래프는 x축 : 시간(time), y축 : 크기(magnitude)로 표현하는 반면 주파수에 대한 그래프는 x축 : 주파수(frequenct), y축 : 크기 로 나타낸다. 이런 변환을 ..

MATLAB

[MATLAB] 악보 만들고 연주하기 & 파형분석

지난번엔 시각적으로 이미지 처리&분석을 했다면 이번에는 청각으로 넘어가 보자. 우리가 듣는 모든 소리는 파형과 진동수를 갖고 있으며 사인, 코사인과 진동수의 조합으로 모든 소리를 재현할 수 있다. 우리가 흔히 접할 수 있는 계이름(도 레 미 파 솔 라 시)도 각각의 주파수(=진동수)를 갖고있다. 도 262 Hz 레 294 Hz 미 330 Hz 파 349 Hz 솔 392 Hz 라 440 Hz 시 494 Hz (높은)도 523 Hz (소수점 생략) 가장 기본적인 사인함수인 sin(2*pi*freq*t)형태로 소리를 출력할 수 있다. 또한 같은 사인함수지만 주파수만 다르게 한 후 합하면 화음을 연출 할 수도 있다. ex) sin(2*pi*262*t) + sin(2*pi*330*t) + sin(2*pi*392*..

MATLAB

[MATLAB] 이미지 분석 & 히스토그램(RGB histogram)

우리가 화면상에서 보는 이미지색상은 전부 R, G, B의 조합으로 이루어져 있다. 조합이 0 ~ 255까지 총 256개로 모든 색을 표현할 수 있다. 이러한 색상요소 하나하나를 픽셀이라고 하는데 모든 이미지는 픽셀로 이루어진 디지털 신호이다. 이미지 픽셀은 마치 행렬처럼 이루어져 있고 이를 화면상에 숫자로 표현할 수 있다. 이번 글에서는 이미지를 갖고 픽셀이 어떻게 이루어져 있는지, 무슨색깔이 가장 많이 이루어져있는지 간단히 해석하는법을 포스팅하겠다. 이미지 분석할 대상은 바로 우리집 최강 귀염댕이 몰티즈 힝둥이다. 우선 매트랩 프로그램에서 이미지를 불러와야 하는데 이때 사용하는 함수가 imread(' ')이다 I=imread('dog.jpg'); 해당 이미지를 불러오니까 정보가 1440x1080x3이라..

MATLAB

[MATLAB] 그래프 설정 명령어

그래프를 단순히 화면에 띄운다고 일이 끝난것이 아니다. 이 그래프가 어떤 모델을 그래프화 한건지, x, y축은 무엇을 나타내는지, 필요에 따라 그래프의 색상도 바꿔야 하는 경우도 있다. 이때 각각의 옵션을 변경할 수 있는 명령어를 알아보자. 1. 그래프 제목 설정 1) title(' '); ' '안에 문자를 입력하면 그래프의 제목을 설정할 수 있다. 2) xlabel(' ') x축 제목 설정 3) ylabel(' ') y축 제목 설정 2. 그래프 표현 방법 1) plot(x, y) 2D 그래프 그리기 2) mesh(x, y, z) 3D 그래프 그리기 3) surf(x, y, z) 3D 그래프 그려서 색 채우기 4) contour(x, y, z) z값을 등고선 그래프로 그리기 5) plotc(), mesh..

MATLAB

[MATLAB] 3D그래프 그리기(Gaussian Distribution Graph 2D & 3D)

3D그래프 그리는 방법은 2차원 평면 그래프 그리는 방법과 별반 차이가 없다. 그저 z축 하나만 추가된 형태라 변수와 for문을 하나씩 추가해주고 3차원 그래프로 출력하기 위해 plot()함수 대신 surf()함수를 작성해 준다. 2차원 평면을 생각해보면 x는 input 이고 y는 x에 의한 output이다. 따라서 input x만 변화해주면 output y는 자동적으로 변하게 되었지만 이를 3차원 으로 확장하면 x, y 둘다 input으로 설정하고 두 input x, y에 관한 output변수를 따로 생성해 주면 된다. 이번 프로그램에서는 output변수를 Gr(=Graph)로 설정해 주었다. len_x=100; len_y=100; x=linspace(-1,1,len_x); y=linspace(-1,1..

MATLAB

[MATLAB] 여러 그래프 띄우기(subplot())

앞서 2차원 그래프를 그릴 때 하나의 창에 하나의 그래프만 띄웠지만 여러 그래프를 띄우고 싶을 때는 어떻게 할까? plot()으로 그래프를 띄우기 전에 subplot()함수로 지정된 공간에 특정 그래프를 띄울 수 있다. 예를 들어 subplot(3, 3, 2)라고 선언을 했다고 가정하자. 이는 창에 3x3형태의 공간을 할당한 상태이며 (1, 2)의 자리에 그래프를 띄운다는 뜻이다. 또 다른 예로 subplot(3, 3, 7)라고 선언을 하면 (3, 1)의 자리에 그래프를 띄운다. 이렇게 스크립트에서 식을 여러개 만들고 for문을 통해 연산을 계속 해주면 하나의 창에 여러 그래프를 띄울 수 있다. t=linspace(-1,1,100); y1=zeros(1,100); y2=zeros(1,100); y3=ze..

MATLAB

[MATLAB] 간단한 함수 & 그래프 그리기(plot() 함수)

지금까지 vector만들기를 한 방식은 명령창에서 값을 바로 만들었다. 그러나 실제로 이렇게 바로 값을 대입하는것은 의미가 없기 때문에 식을 이용해서 계산을 할 수 있도록 스크립트 창에서 직접 프로그래밍을 해보자. 매트랩에서 기본적으로 function이라는 내장함수를 갖고 있기 때문에 쉽게 식을 작성 할 수 있다. function[c, d, e, f]=oper_f(a,b) 라는 함수를 선언을 했다고 가정하자. 이때, oper_f는 함수명이며 (a, b)는 변수이다. function명령을 내린 순간부터 프로그램은 자동으로 함수임을 인식한다. 대괄호 안에있는 c, d, e, f는 각각 하나의 식이며 서로 다른 식으로 정의할 수 있다. 예를들어 c=a+b, d=a-b, e=a*b, f=a/b와 같이 서로 다른..

MATLAB

[MATLAB] linspace(), zeros(), ones() 함수

1) linspace(x1, x2, y) x1 : 초기값 x2 : 최종값 x3 : 초기값과 최종값 사이의 원소의 개수 ex) linspace(0, 10, 10) 0 ~ 10까지 11개의 공간을 만들어 10을 11개로 쪼개어 공간에 대입한다. (==) linear space : 선형적으로 공간을 만든다. 2) zeros(m, n) m x n행렬을 만들어 전부 0으로 채운다 3) ones(m, x) m x n행렬을 만들어 전부 1로 채운다

MATLAB

[MATLAB] 입문 & 기본적인 Vector 만들기

Q. MATLAB이란?? A. MATLAB은 간단하게 말하면 신호를 시각적으로 표현하기 위한 프로그래밍 툴이다. 이 프로그램은 이미지, 음성신호, 영상처리 등 다양한 분양에서 신호를 처리하기 위해 사용되며 매트랩의 강력한 장점중 하나는 바로 행렬을 기반으로 연산한다는 점이다. C/C++에서 행렬연산을 하기 위해서는 동적할당과 포인터를 이용하고 연산함수를 직접 작성해야 하지만 매트랩은 복잡한 행렬식을 컴퓨터의 디지털 신호로 쉽게 연산을 할 수 있다. 1. 기본적인 Vector 만들기 & 명령어 1) a = [1 2 3 4 5] row vector 생성 2) b = a' a vector를 transpose한 형태, 즉 column vector형태 3) c = [2 ; 3 ; 4 ; 5 ; 6] 바로 colu..

시그널보내
'MATLAB' 카테고리의 글 목록