본문 바로가기

programming language/MATLAB215

MATLAB 기본3, sort, if ~ end, for ~ end, max, min MATLAB 은 공학적으로 굉장히 편리 한 툴입니다. 하지만 편리함 속에는 단점도 있는 게 사실 입니다. 쉽다고 함부로 쓰다가는 정말 예상치 못한 결과에 당황하는 경우가 있곤 합니다. 따라서 MATLAB 함수 등을 쓰실 때는 help 문 이나 예제 등을 통해 정확히 알고 난 이후에 이용하는 것이 좋습니다. 이번 포스팅에서는 그럼 기본 함수 몇 가지를 비롯한 몇몇 주의 할 점 들에 대해 설명 드리겠습니다. 첫 번째로 소개해 드릴 함 수는 sort() 함수 입니다. 함수 이름만 봐도 이게 정렬을 해주는 함수구나 하는 건 아실 겁니다. 예를 통해 설명해 보도록 하죠~ A=magic(3) A = 8 1 6 3 5 7 4 9 2 A 에 대해 sort() 함수를 적용해 보면 다음과 같습니다. A1=sort(A) A.. 2011. 3. 21.
MATLAB erf, erfc, Q- function 통신에 대해 공부하다 보면 erfc(x) 함수나 Q(x), erf(x) 함수에 대한 내용들이 많이 나온다. 각 식들은 다음과 같다. 위 함수들은 각각 MATLAB 에서 erf(), erfc(), qfunc() 라는 명령어로 제공한다. erf(), erfc() 함수는 MATLAB 에서 기본적으로 제공하는 함수들이며 qfunc() 은 communication toolbox 에서 제공해주는 함수이다. 추가적으로 위 함수들과 관련하여 erfcinv() 라는 erfc 의 inverse 를 구해주는 함수와 qfuncinv 라는 qfunc() 의 inverse 를 제공해주는 함수도 있다. 2011. 3. 19.
MATLAB BPSK BER simulation in AWGN channel 오늘은 AWGN (Additive white gaussian noise) 채널 환경에서의 BPSK Bits Error Rate(BER)에 대해 설명한다. 일단 BPSK 가 뭔지 잘 모르는 사람은 다음 페이지를 참조 하기 바란다. 2011/03/08 - [통신] - [디지털 통신] BPSK, QPSK 위 페이지를 참조하면 bit 를 BPSK 심볼로 mapping 하는 방식에 대해 알았을 테고, 이제 잡음을 생성하는 방법을 알아 보자. 잡음을 생성하기 위해서는 몇 지 통신 관련 수식에 대해 알아야 한다. 보통 BER 그래프를 그릴 때는 SNR 축에 따른 그래프가 아닌 Eb/No 에 따른 그래프를 그리곤 한다. 따라서 BER 시뮬레이션을 정확히 하려면 Eb/No 에 따른 잡음을 생성할 수 있어야 하겠다. 잡음.. 2011. 3. 19.
MATLAB 반올림 관련 함수들 round, fix, ceil, floor 이번 포스팅에서는 MATLAB 의 rounding 관련 함수들에 대해 정리한다. 다음과 같은 벡터 값에 대해 위 함수들을 적용해 보고 그 특징을 알아본다. x=[-4.3 -1.8 0.7 3.6 1.2+2.6i ] x = -4.3000 -1.8000 0.7000 3.6000 1.2000 + 2.6000i ceil() : + 무한대 쪽으로 rounding 한다. ceil(x) ans = -4.0000 -1.0000 1.0000 4.0000 2.0000 + 3.0000i floor(): ceil 과는 반대로 - 무한대 쪽으로 rounding 한다. floor(x) ans = -5.0000 -2.0000 0 3.0000 1.0000 + 2.0000i fix(): 0 방향으로 rounding 한다. fix(x)a.. 2011. 3. 19.
MATLAB interpolation, interp1() 실험 데이터가 너무 적을 경우 그 경향성을 알아보기 위하여 실험 데이터의 중간 값들을 알아내야 하는 경우가 있다. 이런 경우 interpolation 을 수행하여 수학적으로 중간의 값들을 추정 하곤 한다. 이러한 수치적인 interpolation 을 해 주는 함수 중 하나가 interp1 함수 이다. 다음과 같은 데이터를 가정해 보자. X=0:10 X = 0 1 2 3 4 5 6 7 8 9 10 Y=sin(X) Y = 0 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 0.9894 0.4121 -0.5440 위 코드의 Y 값은 간단하게 0, 1, 2, … 10 값에 대한 sin() 값을 나타낸다. 위 값들을 이용하여 X 값이 0, 0.01, 0.02, 0.03.. 2011. 3. 19.
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 소스 코드 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.
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.
MATLAB tip, Shortcuts 을 이용해 보자 오늘 소개할 MATLAB의 기능은 matlab shortcuts 이다. 보통 MATLAB 유저들이 많이 간과하고 넘어가는 부분인데 이 기능을 잘 이용하면 매우 편하게 current directory를 이동할 수가 있다. 보통의 경우 메인 창의 Current folder 창에 작업하고자 하는 폴더를 써 넣거나 Command window 에서 >> cd c: 이런 식으로 폴더를 변경하곤 한다. 하지만 자주 이용하는 또는 향후에 또 사용하게 되는 폴더라면 인터넷 브라우저에서 북 마크를 하는 것처럼 Matlab Shortcuts 에 등록을 해 놓고 이용을 하는 것이 훨씬 더 편할 것이다. 사용방법은 매우 간단하다. MATLAB 메인 창의 Shortcuts 에서 마우스 오른쪽 클릭을 한다. NEW shortcut.. 2011. 2. 8.
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.