본문 바로가기

programming language484

MATLAB 기본 2 MATLAB 에서 매트릭스의 인덱스에 대한 처리는 정말 기본 중에 기본이라 할 수 있다. 이번 포스팅에서는 매트릭스 인덱스 처리에 대해 설명한다. 1부터 10까지의 정수로 구성된 벡터 X를 발생시켜 보자. 콜론 연산자 이용 X=1:10 X = 1 2 3 4 5 6 7 8 9 10 linspace() 함수 이용 X=linspace(1,10,10) X = 1 2 3 4 5 6 7 8 9 10 무식하게 다 써주기 X=[1 2 3 4 5 6 7 8 9 10] X = 1 2 3 4 5 6 7 8 9 10 위 세가지 방법 모두 동일한 결과를 나타낸다. linspace(1, 10, 10) 함수의 첫 번째 1 은 시작 값 , 두 번째 10은 마지막값, 그리고 세번째 10 은 전체 개수를 의미 한다. 그럼 X 라는 벡터.. 2011. 3. 19.
MATLAB subplot() 오늘은 MATLAB subplot()에 대해 알아본다. subplot()은 하나의 figure 창에 여러 그래프를 표시 할 때 이용한다. 다음 예를 통해 subplot() 에 대해 설명한다. x=1:5; y=1:5; y2=(1:5)*2; figure, subplot(3, 2, 1), plot(x,y) subplot(3, 2, 4), plot(x,y2,'r:.') subplot(3, 2, 1) 에서 첫 번째 3은 그래프의 행의 개수를 의미하고, 두 번째 2는 그래프의 열의 개수를 의미한다. 세 번째 숫자 1은 위 그림에서 빨간색 글자로 표시한 1 부분에 그림을 넣겠다는 의미이다. subplot(3, 2, 4)는 에서 세 번째 숫자 4는 위 그림의 4번 부분에 그래프를 넣겠다는 의미이다. 그럼 위 그림을 다.. 2011. 3. 16.
MATLAB 입력 신호의 delay 확인 xcorr(), finddelay() 통신 또는 신호 처리에 있어서 delay 는 항상 존재 하기 마련이다. 필터링이나, 공기중의 매질을 통과하는 동안의 시간 지연RF 소자에 의한 지연 등.. 굉장히 다양한 지연 요소가 있다. 이런 delay 값을 확인 하기 위하여 수신신호와 기준 신호의 correlation을 이용하곤 한다. correlation 은 상관도로서 reference 값과 들어오는 값이 얼마나 잘 매치가 되는지를 알아 보는 척도이다. 이런 correlation 을 수행하는 함수로 xcorr() 함수가 있다. 본 함수는 Signal processing toolbox 내에 포함된 함수이다. x=1:5 x = 1 2 3 4 5 y=[0 0 0 1:5] y = 0 0 0 1 2 3 4 5 위의 x와 y 값을 비교 해 보면 y 가 x 에.. 2011. 3. 14.
MATLAB 벡터화 기법 MATLAB 의 연산은 기본적으로 매트릭스 연산을 기본으로 한다. 따라서 매트릭스 또는 벡터의 연산에 매우 편리하도록 구성이 되어 있다. 반면에 for 나 while 같은 루프 문의 경우에는 비교적 그 처리 속도가 느린 단점이 있다. 따라서 for 나 while 같은 루프 문은 가급적이면 안 쓰는 방향으로 코딩을 하는 것이 좋다. for 나 while 같은 루프 문을 매트릭스 또는 벡터 연산으로 처리 하는 것을 벡터화 기법이라 한다. 다음 수식에 대해 M 파일 코딩을 해 보자. 위 수식에 대해 for 문을 이용해서 코딩을 하고 tic, toc 을 이용하여 처리 시간을 측정 해보자. tic sum_v=0; % sum 초기값 설정 for n = 1:100 sum_v =sum_v + n^4; % 4 승 end.. 2011. 3. 14.
MATLAB 적분 추가 내용 trapz() 다음 페이지에서 2011/03/14 - [programming language/MATLAB] - MATLAB 적분 int(), quad() MATLAB 에서 이용 가능한 적분에 대해 학습을 한 적이 있다. 오늘은 추가적으로 수치 적분 함수 중 사다리꼴 기법으로 적분을 수행하는 trapz() 함수에 대해 설명한다. trapz() 함수의 원형은 다음과 같다. Z = trapz(X,Y) X 값은 함수의 입력이고 Y 값은 함수의 출력이다. trapz() 함수를 이용하여 다음 수식에 대한 적분을 수행해 보자. 일단 X 의 범위를 정한다. 적분 구간이 0~3 이므로 X=0:3 X = 0 1 2 3 Y= X.^2 + 2.*X + 1 Y = 1 4 9 16 integral_value=trapz(X,Y) integral.. 2011. 3. 14.
MATLAB 적분 int(), quad() MATLAB 을 이용하여 적분을 수행해 보자. MATLAB 을 이용하여 적분을 하는 방법은 크게 두 가지 정도로 구분 할 수 있을 것 같다. 첫 번째로는 수치적인 적분 방법이고 두 번째는 Symbolic math toolbox 를 이용한 수학적인 접근 방법이다. 수치적인 접근 방법이라 하면 사다리꼴 방법 과 같이 함수를 매우 작은 조각으로 나눠서 부분부분의 면적의 합을 구하는 방법이 될 것이다. 물론 이런 적분을 구하는 알고리즘을 짜서 적분을 할 수도 있겠지만 고맙게도 matlab 은 이런 함수를 제공 해 준다. quad() 함수를 이용하면 수치 적분이 가능하다. 본 함수는 수치 적분이므로 부정적분을 해 주지는 못한다. 따라서 다음 수식과 같이 구간이 정해진 식에 대해서만 적분 할 수 있다. 위 수식에 .. 2011. 3. 14.
MATLAB 함수의 해를 구해 보자~ fzero(), roots(), poly() MATLAB 에서 다항식 또는 연속 함수의 해를 구하는 방법에 대해 설명한다. fzero() 은 연속 함수의 한 지점에서의 해를 구하는 함수이다. 함수의 원형은 x = fzero(fun,x0) 이며 fun 이라는 함수에 대하여 x0 근처에서의 해를 찾아 준다. fzero() 함수는 y 값의 부호가 바뀌는 지점을 찾아서 해를 구하는 방식이다. 내부 알고리즘으로는 bisection, secant, inverse quadratic interpolation methods 이렇게 세 개 알고리즘이 조합된 방식을 이용한다고 한다. 해를 찾는 방식이 y 의 부호 변경 지점을 찾는 것이므로 y=x2 과 같이 x축에 접하는 함수에 대한 해를 찾을 때는 사용하지 않는 것이 좋다. Command 창에 다음과 같은 명령을 해.. 2011. 3. 13.
MATLAB ezplot() 함수로 그래프를 쉽게 그리자 오늘은 ezplot() 함수를 이용하여 그래프를 그리는 방법에 대해서 설명하겠습니다. ezplot() 함수는 함수에 대해 기본적으로 x 축의 범위가 -2π ~ 2π 범위에 대해 그래프를 그려 주는 함수 입니다. 물론 함수의 범위는 사용자가 설정할 수도 있습니다. 몇 가지 예를 통해 사용 방법을 설명 드리겠습니다. y=sin(x) + x2 + 2x+4 라는 함수에 대해 그래프를 그려 보겠습니다. 위 수식에 대한 그래프를 그리는 방법은 다음과 같습니다. matlab command 창에서 ezplot('sin(x) + x.^2 + 2.*x+4 ') 라고 타이핑 하면 다음과 같은 결과가 나옵니다. 다음 결과는 x 축의 범위가 위에 설명 드린 데로 -2π ~ 2π 범위의 값이 나왔습니다. 그럼 조금 다른 형태로 .. 2011. 3. 13.
MATLAB 다항식의 계수 추정 polyfit(), polyval() polyfit() 함수는 입력과 출력 값으로부터 다항식의 계수를 찾아 주는 함수 입니다. 예를 들면 라는 식에서 x, y 값을 알고 있으면 다항식의 계수값 a, b, c 값을 찾아 준다는 것입니다. polyfit() 함수의 원형은 다음과 같습니다. p = polyfit(x,y,n) x 는 다항식의 입력값, y 는 다항식의 결과값입니다. n 은 차수를 의미 합니다. p 는 차수에 따른 다항식의 계수 값을 의미 합니다. 다음과 같은 x, y 값에 대하여 다항식의 계수를 찾아보겠습니다. x=0:5 x = 0 1 2 3 4 5 y=2*x.^3 + 5*x.^2 + 6*x+4 y = 4 17 52 121 236 409 위와 같은 값이 있을 때 다음과 같이 3차 다항식의 계수를 찾습니다. 결과 p 의 값을 보면 위에.. 2011. 3. 12.
MATLAB 과 유사한 공학용 프로그램 SCILAB 오늘은 괜찮은 공학용 프로그램 하나 소개해 드리겠습니다. 바로 제목에 있는 SCILAB 이라는 프로그램인데요…… 이 프로그램이 뭐냐 하면 MATLAB 하고 굉장히 유사한 공학용 프로그램 입니다. MATLAB 은 뭐 툴 박스 하나만 해도 몇 백만원씩 하는 고가의 프로그램이라 학교나 회사 등에서 사주지 않는 이상은 개인들이 사기에는 부담스러운 프로그램입니다. 반면에 SCILAB은 완전 공짜의 프로그램 입니다. 공짜라고 해서 허접하거나 하지도 않군요. 익숙해 지기만 하면 MATLAB 대용으로도 써도 괜찮겠다는 생각이 듭니다. 프로그램은 http://www.scilab.org/ 에서 다운 받을 수 있습니다. 현재 5.3.1 버전까지 나와 있군요. 운영 체제는 Linux, Windows, MAC os X 지원하구.. 2011. 3. 11.
MATLAB 소스 코드 protection, pcode MATLAB 으로 M 파일 작성시 가끔 다른 사람들과 파일을 교환해야 하는 경우가 종종 있습니다. 이런 경우 회사 또는 개인의 보안상 파일의 소스는 숨겨서 보내야 할 경우가 있죠. C/C++ 같은 경우에는 라이브러리 파일처럼, MATLAB 에는 .p 라는 확장자를 갖는 파일을 만들 수가 있습니다. 이렇게 m 파일을 p 파일로 바꿔주는 함수가 바로 pcode 함수 입니다. pcode 함수의 사용 방법은 굉장히 간단 합니다. pcode abc.m 과 같은 형태로 써주면 abc.p 라는 pcode 가 만들어 집니다. 외부 또는 다른 사람에게 이 abc.p 파일을 넘겨주면 파일 소스는 볼 수 없지만 실행은 시킬 수가 있습니다. pcode *.m 이라고 써 주게 되면 현재 폴더 안의 모든 m 파일들을 다 p 파일.. 2011. 3. 11.
MATLAB [디지털 통신] EYE PATTERN 오늘은 EYE PATTERN 에 대해 알아 보려 합니다. 학부 때 EYE PATTERN 이란 걸 보고 이게 뭘까 ~ 정말 도무지 감이 안 왔던 기억이 있습니다. EYE PATTERN 이란 특정 시간 구간 동안 들어오는 신호의 파형을 계속 겹쳐서 나타낸 것뿐입니다. 보통 EYE PATTERN을 그릴 때는 2 심볼 구간 동안 표시를 하곤 하죠. 오늘 EYE PATTERN을 하기 전에 BPSK 에 모르시는 분들은 아래 글을 읽고 오시기 바랍니다. 2011/03/08 - [잡담,잡다] - [디지털 통신] BPSK, QPSK 그리고 Raised cosine filter 에 대해서는 아래 글을 참조해 주세요. 2011/03/02 - [MATLAB] - [디지털 통신] Raised Cosine Filter 그럼 이제.. 2011. 3. 9.
MATLAB Editor 파일 비교 MATLAB 은 대화형 언어로서 Command 창에 명령어를 치면 결과가 바로 밑에 뚝딱 뚝딱 나옵니다. 그런데 코드가 길어 진다면 Command 창에서 작업을 하는 것은 비 효율적입니다. 그래서 보통은 Editor 창에서 코딩을 하고 M 파일로 저장하고 실행을 시켜서 Command 창에서 확인을 합니다. Editor 창에서 F5 를 누르거나 초록색 삼각형 모양으로 생긴 실행 단추를 클릭하면 M 파일이 실행이 됩니다. 오늘 소개할 내용은 MATLAB Editor 창의 파일 비교 기능 입니다. M 파일을 버전 별로 작성하다 보면 꼭 변경 내용을 추적해야 될 때가 있습니다. 코드가 짧다면 상호 비교하는데 문제가 안되지만, 코드가 100 줄 넘어가기 시작하면 비교하는 것도 참 눈 아프고 힘든 일입니다. 이럴 .. 2011. 3. 8.
MATLAB 부분 분수 전개 residue() MATLAB 에는 다항식 계수와 부분 분수 사이의 변환을 해주는 함수로서 residue() 함수를 제공해준다. residue() 함수의 원형은 다음과 같다. [r,p,k] = residue(b,a) [b,a] = residue(r,p,k) 위 식에서 b 는 다항식의 분자 부 계수 이다. a 는 다항식의 분모 부 계수 이다. r 은 나머지 성분이다. p 는 pole 성분이다. k 는 몫의 값이다. 이라는 다항식에 대해 부분 분수 전개를 수행해 보자. 수학적으로는 다음과 같다. (1) 이제 residue() 함수를 이용하여 부분 분수 전개를 해보자. 분자 부의 계수를 설정한다. b=[2 1] b = 2 1 분모 부의 계수를 설정한다. a=[1 3 2 ] a = 1 3 2 부분 분수 전개를 수행한다. [r,p.. 2011. 3. 7.
MATLAB figure 창 위치를 바꿔보자 MATLAB 에서 그래프를 그려 보자. x=1:10 x = 1 2 3 4 5 6 7 8 9 10 y=1:10 y = 1 2 3 4 5 6 7 8 9 10 figure, plot(x, y, 'r*--'), grid on 위 명령어를 치면 아래와 같이 윈도우 창의 중간 좀 위 부분에 그림이 뜬다. 저런 그림을 여러 개 그릴 경우에는 그림이 겹쳐서 한번에 보기에는 좀 곤란한 경우가 많다. 이런 경우에 그림의 위치를 설정해 줄수 있다면 굉장히 편리하다. matlab 에서 화면의 크기를 알려면 다음과 같이 명령어를 입력하면 된다. get(0, 'screensize') ans = 1 1 1680 1050 내 모니터는 현재 1680 바이 1050 픽셀의 크기를 가지고 있다고 나온다. 그럼 이제 화면상의 좌 하단과 우.. 2011. 3. 6.
Powershell 용량 작은 파일 지우기 컴퓨터를 사용하다 보면 특정 용량 이상 또는 특정 용량 이하의 파일들을 걸러 내고 싶은 경우가 있다. 이런 경우엔 단순히 윈도우 탐색기에서 크기에 따라 정렬을 한 이후에 드래그 하여 지우는 방법 등을 쓸 수가 있다. 하지만 같은 폴더내에 특정 확장자의 파일만 지우고 싶은 경우에는 윈도우 탐색기만으로는 부족하다. 이런 경우 powershell 을 이용하면 너무나 간단히 작업을 완료 할 수가 있다. 나의 경우엔 D:\movie_folder 안에 있는 avi 파일 중에서 용량이 100 MB 이하인 파일들을 지우고 싶었다. 위 작업을 수행하는 powershell 코드는 아래와 같다. gci d:\movie_folder\* -Include *.avi | Where-Object -FilterScript { $_.l.. 2011. 3. 6.
MATLAB 기본 함수들 오늘은 MATLAB 기본 함수들에 대해 설명하려 한다.너무 많은 함수들이 있어서 다 설명하기는 힘들고 생각날 때 마다 본 페이지에 추가 하는 방식으로 설명하는 것이 좋을 것 같다. 아래와 같은 매트릭스를 예를 들어 보자. x=magic(4) % 4행 4열의 마 방진 매트릭스 행 또는 열의 모든 합이 같은 매트릭스를 만들어 준다. x = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 flipud() 함수는 위 아래를 변경 할 때 이용한다. 즉 행의 순서를 바꿀 때 사용한다. x2=flipud(x) x2 = 4 14 15 1 9 7 6 12 5 11 10 8 16 2 3 13 fliplr() 함수는 좌 우를 변경 할 때 이용한다. 즉 열의 순서를 바꿀 때 사용한다. x3=fliplr(.. 2011. 3. 2.
[디지털 통신] Raised Cosine Filter Raised cosine filter 는 펄스 쉐이핑 뿐만이 아니라 대역 제한을 위한 필터로서 통신의 가장 기본적인 필터라 할 수 있다. 송 수신단에 각각 square root raised cosine 필터를 적용함으로써 Matched filter 로서 이용하는 게 일반적이다. 오늘은 MATLAB 을 이용하여 raised cosine filter 를 설계하는 방법에 대해 알아 본다. 매트랩의 Communications Toolbox 가 있는 경우 rcosine() 이라는 raised cosine filter 설계 함수를 제공해 준다. 함수의 기본형은 다음과 같다. [num,den] = rcosine(Fd,Fs,type_flag,r,delay,tol) 위 기본형에서 각 인자에 대해 설명해 본다. num 은.. 2011. 3. 2.
conv(), filter(), 인수분해 전개 conv() 함수와 filter() 함수의 차이를 알아보고자 한다. 다음과 같이 두 행벡터에 대하여 x =[1 2 3] x = 1 2 3 y=[3 4 5] y = 3 4 5 convolution 을 해보면 결과는 아래 와 같다. C=conv(x,y) (1) C = 3 10 22 22 15 그리고 x, y 에 대하여 filtering 을 해보면 결과는 아래와 같다. F=filter(x, 1, y) (2) F = 3 10 22 딱 봐도 conv() 함수를 적용한게 더 길게 나온 것을 확인 할 수가 있다. conv() 함수는 두 벡터의 길이를 더한 것 -1 만큼 길이의 결과가 나온다. 위 예에서는 x 의 길이가 3 이고 y 의 길이가 3 이므로 3+3-1 = 5 만큼의 결과가 나오는 것이다. filter() .. 2011. 3. 1.
Matlab Script coding tips, cell mode Matlab Editor 에서 스크립트 코딩시에 cell 모드 이용 방법에 대해 알아 본다. Cell mode 는 코드를 구분하여 실행시킬 때 쓸 수 있고, matlab 코드로부터 report 작성시에도 각 단락 등을 구분 시켜 주는 역할을 한다. 아래 보는 밑줄친 부분(%% + 기호)을 클릭하면 그 부분에 %% 기호가 나타나면서 가로줄이 그어 진다. 또는 단순히 %% 를 써도 되고 control+space 단축키나 cell 메뉴에 들어가서도 셀 설정을 할 수가 있다. 셀 모드에서 %% 원본 이라 되어 있는 셀에 커서를 놓은 후에 동그라미 친 부분(Evaluate cell) 을 누르면 해당 셀만 실행이 되고 위 코드의 경우엔 아래와 같은 그래프가 나온다. 그 아래 셀로 커서를 옮겨서 14 번째 줄에서 2.. 2011. 2. 23.
powershell 을 이용한 program uninstall powershell 을 이용하여 윈도우에 설치되 있는 program을 uninstall 해 보자 현재 깔려 있는 program 중 opera browser를 지우는 예제 이다. $prog= Get-WmiObject Win32_Product | Where-Object -FilterScript {$_.ToString() -match "opera"} 먼저 Get-WmiObject Win32_Product 명령을 이용하여 현재 컴퓨터에 깔려 있는 프로그램들을 찾는다. 그리고 파이프 라인( | ) 과 where-object 를 이용하여 이름중에 opera 가 들어있는 프로그램만 솎아 낸다. 이렇게 찾아낸 object 는 $prog 라는 변수에 저장 된다. 이제 다음으로는 아래 명령으로 간단하게 uninstall .. 2011. 2. 13.
MATLAB tip, Shortcuts 을 이용해 보자 오늘 소개할 MATLAB의 기능은 matlab shortcuts 이다. 보통 MATLAB 유저들이 많이 간과하고 넘어가는 부분인데 이 기능을 잘 이용하면 매우 편하게 current directory를 이동할 수가 있다. 보통의 경우 메인 창의 Current folder 창에 작업하고자 하는 폴더를 써 넣거나 Command window 에서 >> cd c: 이런 식으로 폴더를 변경하곤 한다. 하지만 자주 이용하는 또는 향후에 또 사용하게 되는 폴더라면 인터넷 브라우저에서 북 마크를 하는 것처럼 Matlab Shortcuts 에 등록을 해 놓고 이용을 하는 것이 훨씬 더 편할 것이다. 사용방법은 매우 간단하다. MATLAB 메인 창의 Shortcuts 에서 마우스 오른쪽 클릭을 한다. NEW shortcut.. 2011. 2. 8.
폴더에 있는 파일들의 확장자 알아보기 폴더 내에 어떤 확장자 들이 있는지 확인 하고 싶을때가 있다. 이런 경우 powershell 같은 툴은 쓰지 않는다면 일일이 눈으로 확장자를 찾아서 메모장과 같은데에 기록해야 할것이다. 하지만 powershell 을 이용하면 이런 경우 명령어 몇줄로 해결 할 수 있다. 일단 폴더에 어떤것들이 들어 있는지 확인 해야 하므로 gci, dir 또는 Get-ChildItem 과 같은 명령어로 어떤 파일들이 있는지를 확인한다. 폴더는 제외 하고 파일만 검색 하기 위하여 were-obect 명령어로 폴더를 제거해준다. 이후 sort-object 명령어를 이용하여 확장자에 따른 파일을 추려 내고 중복되는 확장자들은 하나만 선택되도록 -unique 옵션을 이용한다. 그리고 마지막으로 위에서 추려진 파일에서 확장자들만 .. 2011. 1. 31.
MATLAB movie() 함수를 이용하여 움직이는 그래프를 만들어보자 움직이는 그래프를 만들어 보자 매트랩에서 그래프를 동영상으로 만드는 방법은 매우 간단하다. 변수에 따라 for 문을 이용하여 그래프를 그리고 각 프레임을 저장을 한다. 그리고 movie() 함수를 이용하여 실행한다. 아래 코드는 사인 함수의 계수값을 증가시키면 어떻게 되는지를 보여주는 코드이다. axx = 0:0.01:2*pi; for k=1:16 plot(axx, k*sin(axx)); grid on axis([0 2*pi -16 16]) M(k)=getframe; end movie(M,1) avifile() 함수를 이용하여 avi object 를 만들어서 avi 파일로 저장도 가능하다. 아래 결과는 좀더 좁은 간격의 k 값에 대하여 실행한 결과이다. 2010. 1. 19.
MATLAB String evaluation, eval() MATLAB 의 다양한 능력중에 string evaluation 과 관련한 함수인 eval을 이용해 보자. 가령 아래와 같은 예를 수행해 보고 싶은 경우가 있다. A1 이라는 변수에는 1행 1열의 uniform sample 을 저장하고 A2 이라는 변수에는 2행 2열의 uniform sample 을 저장하고 A3 이라는 변수에는 3행 3열의 uniform sample 을 저장하고 …. A100 이라는 변수에는 100 행 100 열의 uniform sample 을 저장하고 싶다고 해보자. 뭐 변수가 한 두개라면 그냥 몇줄 쓰면 되니 그리 문제될게 없지만, 이 경우처럼 100 개나 되는 변수에 저 값들을 일일이 할당한다는건 비효율 적이라는건 누구나 알 수 있다. 이런 경우 eval() 함수를 이용하면 너무나.. 2010. 1. 17.
MATLAB filter, filtic 함수를 이용한 이산 시스템 응답 MATLAB 을 이용하여 아래와 같은 조건의 시스템에 대한 시스템 응답을 구해 보자. a=[1 -1 1]; % 피드백 루프의 계수 b=[1 0 0]; % 포워드 루프의 계수 n=(0:40)'; % Sample index 값 x=inline('cos(2*pi*n/6).*(n>=0)','n'); % x(n) 을 인라인 함수로 생성 z_i=filtic(b,a,[1 2]); % filter initial condition 설정 y=filter(b,a,x(n),z_i); % filter 함수를 이용한 시스템 응답 stem(n,y), grid on, xlabel('n'), ylabel('y[n]') 2010. 1. 13.
MATLAB Upsample 과 FFT FFT 되는 신호의 중간에 upsampling을 하고 그 결과가 어떻게 되는지를 확인해 보자 다음과 같은 sin() 그래프가 있고 이에 대한 FFT 를 수행해보자 pha = linspace(0,2*pi,32)'; x=sin(pha); y=fft(x); figure(1), plot(pha,x,'b:.'), grid on 다음과 같이 x 의 값에 3 sample 씩 upsample 을 하고 그에 대해 FFT 를 해보자. xZero = upsample(x,3); yy=fft(xZero); x 에 대한 fft 결과인 y 값과 upsample 된 신호에 대한 fft 결과인 yy 를 같이 그리기 위하여 다음과 같이 x 축을 설정하고 FFT 결과에 대한 절대값 그래프 및 위상값을 확인해 보자. x_axis=0:len.. 2010. 1. 10.
MATLAB 음성 파일 읽기, 재생 wav 파일을 읽어 들이고 이에 대하여 MATLAB 프로그램에서 실행 시켜 보자. 같은 폴더 내에 잇는 a.wav 라는 파일을 파일을 읽어들이는 건 아래 함수와 같이 하면 된다. [y,Fs,bits]=wavread('a.wav'); 그때 함수로부터 받을 수 있는 값들은 음성 값인 y 값과 샘플링 주파수 Fs 값, 그리고 샘플당 비트 수인 bits 값 등을 받는다. 이렇게 읽어 들인 소리 파일을 재생하는 것 또한 아래와 같이 매우 간단한다. sound(y, Fs); 하지만 이 함수는 내 경험상 봤을 때, 중간에 멈춰 지지가 않는다. 만약 긴 노래 등을 중간에 멈추고 싶을때는 난감한 경우가 많다. 이런경우를 대비하여 다음과 같이 audioplayer object 를 이용할 수 있다. ob= audioplay.. 2010. 1. 8.
변수의 크기를 알아보자 변수의 크기를 알 수 있는 함수는 3가지 정도가 있다 . 다음과 같은 x 라는 변수에 대하여 함수별로 그 특징을 알아보자. x=rand(2,7) x = 0.8147 0.1270 0.6324 0.2785 0.9575 0.1576 0.9572 0.9058 0.9134 0.0975 0.5469 0.9649 0.9706 0.4854 size(x) ans = 2 7 위 결과와 같이 size() 함수는 각 Dim 별로의 크기를 나타내 준다. length(x) ans = 7 Dim. 별 크기중 큰 수를 나타내 준다. numel(x) ans = 14 전체 element의 개수를 나타낸다. 2010. 1. 8.
MATLAB PDF (Probability Density Function) MATLAB 으로 PDF 를 그려보자. PDF(Probability Density Function)라는게 어케 보면 Histogram이랑 개형은 같지만 엄밀하게 얘기하면 좀 다르다고 할 수 있다. 그 차이는 바로 Normalization에 있다. PDF 의 특징은 그 적분값이 1 이어야 하므로 당연히 Histogram 을 그린후 그 넓이를 Normalization 을 해야한다. 간단하게 [0 100] 구간의 Uniform pdf 를 그려 보자. MATLAB editor 에 다음과 같이 타이핑 하고 실행해 보자 N = 3000; Uniform_sample=rand(N,N)*100; % 0~ 100 사이의 Uniform sample 을 발생시킨다. [pdf,X]= hist(Uniform_sample(:), .. 2010. 1. 3.