본문 바로가기

programming language466

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.
MATLAB Zero padding 에 따른 FFT 결과 FFT 가 되는 신호에 대한 zero padding 효과가 어떻게 되는지를 알아보자 다음과 같은 sin() 그래프가 있고 이에 대한 FFT 를 수행해보자pha = linspace(0,2*pi,32)';x=sin(pha);y=fft(x);figure(1), plot(pha,x,'b:.'), grid on 아래 코드와 같이 x 값의 뒤에 0 을 넣어 보자. 이를 zero padding 이라 한다. x 값의 크기 만큼, 이 예에서는 32 만큼의 0을 뒤에 넣어 보자. 그리고 이에 대해 fft 를 해보자 xZero = [x ; zeros(32,1)]; yy=fft(xZero); x 에 대한 fft 결과인 y 값과 zero padding 된 신호에 대한 fft 결과인 yy 를 같이 그리기 위하여 다음과 같이 x .. 2010. 1. 3.
MATLAB - vectorize() MATLAB 수식 작성 중 초보자들이 많이 틀리는 부분이 element 간의 계산에 대한 부분인 것 같다. 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 위와 같은 변수가 있고, x와 y의 element 간의 곱을 하기 위하여 z=x*y 라는 명령어를 넣고 결과가 나오기를 기대하는 것은 MATLAB 의 operator 에 대하여 정확한 이해가 되지 않은 사람들이 하는 실수이다. MATLAB 은 기본적으로 매트릭스 연산을 기준으로 한다. 위에 설정한 변수 x, y 는 둘 다 1행 10열의 벡터이므로 x*y의 매트릭스 곱은 성립될 수 없다. element 간의 곱을 하려면 연산자 앞에 . 을 붙여야 한다. z=x.*y 라는 명령어를 .. 2010. 1. 1.
MATLAB notebook MATLAB notebook 을 이용해 보도록 하자. 본 기능을 이용하기 위해서는 당연히 MS Office 프로그램이 깔려 있어야 한다. MATLAB Command Window에 다음과 같이 타이핑하면 다음과 같은 내용이 Command 창에 뜨면서 워드 창이 하나 뜰 것이다. 워드 창은 다음과 같은 추가 기능이라는 탭이 하나 생겼다. 워드 문서에 간단한 사인 그래프나 한번 그려 넣어보자. 매트랩을 이용하듯이 워드창에 똑같이 쓴다. 이렇게 코드를 타이핑 했으면 이제 매트랩에서 실행시키듯이 똑같이 실행 시키면 된다. 실행시키고자 하는부분을 블록으로 설정하고 다음과 같이 오른쪽 버튼 클릭후 Evaluate Cells 를 클릭하자. 워드 창에 아래와 같이 그림이 샤라락~ 하고 생기는걸 볼 수가 있다. 또한 MA.. 2010. 1. 1.
MATLAB Iteration 매트랩 에디터의 기능중 사소하게 지나치기 쉬운 매우 유용한 스킬중 하나로 MATLAB iteration 기능을 하나 소개하고자 한다.다음과 같이 0~2*pi 에 대하여 sin 그래프를 그리는 간단한 예를 들어보자. x=0:0.01:2*pi; a=1; y=sin(x)*a; plot(x,y), grid on, axis([0 7 -20 20]) 위 코드에서 a=1 값을 1씩 올려가며 바꾸고 바뀐 그림을 계속 보고자 할 때 for 문을 돌리거나 아님 간단히 1 을 2로 바꾸고 실행한다거나 하면 될 것이다 하지만, 우리는 iteration 기능을 이용하여 이를 수행해 보자 아래 동영상에서 보는 바와 같이 숫자 앞에 커서를 놓고 iteration + - * / 를 누르면 원하는 iteration을 수행할 수 있다. 2009. 12. 31.