통신 시뮬레이션을 하면서 Root Raised Cosine Filter 는 많이들 사용하실 텐데요.
아래 포스팅에서 소개했다시피, Root Raised Cosine Filter Coefficient 는 Communications System Toolbox 의 rcosine() 함수를 통해서 구할 수가 있었습니다.
2011/03/02 - [programming language/MATLAB] - [디지털 통신] Raised Cosine Filter
2011/03/09 - [programming language/MATLAB] - [디지털 통신] EYE PATTERN
그런데 최근에 사용해보니 다음과 같이 향후에는 없어질 함수이니 fdesign.pulseshaping 을 사용하라고 나오더군요.
MATLAB 을 사용할 수 없는 환경에서는 OCTAVE 를 사용할 때, communications package 는 있지만 rcosfir, rcosflt 와 같은 함수들은 아직 제공되지 않더군요.
http://octave.sourceforge.net/communications/overview.html
Root Raised Cosine Filter Coefficient 수식을 보고 작성하는 방법도 있겠지만, 이런 코드들은 대부분 인터넷을 찾아보면 나오기 마련이라
찾아보니 아래 주소에 있더군요.
http://www.mathworks.com/matlabcentral/fileexchange/14809-m-qam-modulation-and-demodulation
위 주소에서 다음 그림과 같이 QAM.zip 파일을 다운로드 한 후에 압축을 해제 합니다. 파일 이름에서도 알 수 있겠지만, QAM 변복조 함수들이 포함되어 있더군요.
몇가지 함수 중에 my_rrc.m 함수가 Root Raised Cosine Filter Coefficient 를 생성하는 함수 입니다.
함수 원형이 다음과 같으니 네 개의 변수를 넣는다는건 아실테고~ 위에서 설명드린 rcosine() 함수와 비슷하더군요.
function f = my_rrc(fd, fs, beta, delay)
% MY_RRC Produces the impulse response of a root raised cosine filter
% F = MY_RRC(Fd, Fs, BETA, DELAY) is the impulse response of a root
% raised cosine FIR filter with rolloff factor BETA and delay DELAY.
fd 는 원 신호의 sample rate, fs 는 oversample rate, beta 는 Root Raised Cosine Filter 의 rolloff factor, delay 는 말 그대로 filter 의 delay 심볼 수 입니다.
제가 테스트 해보니
Sqrt_r_filter= rcosine(1e6, 8e6, 'sqrt', 0.2, 3);
Sqrt_r_filter_2=my_rrc(1e6,8e6,0.2,3);
D=Sqrt_r_filter_2(:)-Sqrt_r_filter(:)
plot(D)
차이가 10-16 대로 동일한 계수가 나오더군요.
간단하게 Root Raised Cosine Filter 를 roll off 에 따라 그려봤습니다.
Sqrt_r_filterAll=[];
legCell={};
n=1;
for r=0.2:.2:.9
Sqrt_r_filterAll(:,n)=my_rrc(1e6,8e6,r,3);
legCell{n}=num2str(r);
n=n+1;
end
figure,
plot(Sqrt_r_filterAll), grid on
legend(legCell)
OCTAVE 에서도 확인해보니 정상적으로 Root Raised Cosine Filter Coefficient 가 나오더군요.
'programming language > MATLAB' 카테고리의 다른 글
Autohotkey를 사용한 MATLAB 단축키 (4) | 2013.11.18 |
---|---|
MATLAB clipboard() 함수를 사용한 복사 붙여넣기 (0) | 2013.11.11 |
MATLAB comma로 나눠진 파일(csv) 읽기 csvread(), 쓰기 csvwrite() (0) | 2013.11.09 |
MATLAB 구매 가격에 대해 질문하는 분들을 위해… (2) | 2013.11.07 |
MATLAB hash table 사용하기 (0) | 2013.10.22 |
MATLAB Batman Equation (0) | 2013.10.20 |
MATLAB 시작 폴더 변경 및 startup.m 파일 설정 (0) | 2013.09.30 |
MATLAB filter() 함수의 고급 사용 (0) | 2013.09.21 |
댓글