현대 사람들이라면 주파수라는 말을 들어보지 못하신 분들은 없을 것입니다.
핸드폰을 다 사용하니 SK 주파수가 어떻고~ KT 주파수는 어떻고~ 하는 말도 많이들 들어보셨을 테고~
요즘은 라디오 하나만 들을라고 해도 라디오 주파수라는걸 알아야 되니깐 우리는 알게 모르게 주파수라는걸 자주 접하고 있습니다.
어쨌든 이런 주파수는 통신에 있어 굉장히 중요한데~
오늘은 주파수 변환에 MATLAB 을 사용하여 간단히 알아보겠습니다.
코드는 다음과 같습니다.
ft=2e6; % exp signal frequency
fc_U=10e6; % Carrier Frequency
fc_D=11e6; % Carrier Frequency
Fs=40e6; % Sample rate
Ts=1/Fs; % Sample duration
L=10000; % # of Sample
n=(0:(L-1))*Ts;
Data=exp(1i*2*pi*ft.*n); % Cosine + j Sine data
Carrier_signal=exp(1i*2*pi*fc_U*n); % Up conversion carrier
Carrier_signal2=exp(-1i*2*pi*fc_D*n); % Down conversion carrier
UpConversionedData=Data .* Carrier_signal; % Up conversion
DownConversionedData=UpConversionedData .* Carrier_signal2; % Down conversion
NFFT = 2^nextpow2(L); % FFT size
Y1 = fft(Data,NFFT)/L; % FFT of exp() data
Y_U = fft(UpConversionedData,NFFT)/L; % FFT of UpConversioned Data
Y_D = fft(DownConversionedData,NFFT)/L; % FFT of DownConversioned Data
f = Fs/2*linspace(0,1,NFFT/2+1); % Frequency axis
%% Graph
figure, subplot(311)
plot(f,2*abs(Y1(1:NFFT/2+1))) , grid on
title('FFT of exp() ')
xlabel('Frequency (Hz)')
ylabel('|Y1(f)|')
subplot(312)
plot(f,2*abs(Y_U(1:NFFT/2+1))) , grid on
title('FFT of Upconversioned data')
xlabel('Frequency (Hz)')
ylabel('|Y_U(f)|')
subplot(313)
plot(f,2*abs(Y_D(1:NFFT/2+1))) , grid on
title('FFT of DownConversioned data')
xlabel('Frequency (Hz)')
ylabel('|Y_D(f)|')
위 예는 간단하게 2 MHz 주파수의 exp() 톤 신호를 10 MHz up conversion 했다가 11 MHz down conversion 하는 예제 인데요~
Up down conversion 은 수학적으로는 간단하게 sin, cosine 함수를 적절히 곱해주면 되는 겁니다.
주석에 설명을 해서 굳이 설명 드리지는 않겠습니다.
다음과 같이 Up Down Conversion 결과를 보실 수 있습니다.
'통신' 카테고리의 다른 글
[C/C++] Q, erfc function (0) | 2011.10.05 |
---|---|
[디지털 통신] Quantization 에 따른 SNR (0) | 2011.05.24 |
[디지털 통신] QAM mapping & demapping (4) | 2011.04.09 |
[디지털 통신] BPSK, QPSK (4) | 2011.03.08 |
댓글