1. 풀이 |
dsb-sc(double-sideband suppressed-carrier transmission) 변조는 message signal에 carrier(cos(2*pi*fc*t))를 곱하여 만들어준다.
이 변조는 반주기마다 신호가 0이 되는 부분이 발생한다. 이러한 이유 때문에 dsb-sc변조의 경우 실제 복조 과정에서 수신 신호의 수신이 필요하다. 이때, 수신기의 위상 오차에 따라 출력 크기가 변화하게 된다.
위상 오차가 90도에 근접하면 출력신호를 거의 잡을 수 없게 된다. 이러한 단점을 보완하기 윈해 AM변조(dsb-lc, Double sideband Large carrier)가 활용된다.
이러한 dsb-sc의 과정을 코드로 다시 표현하였다.
코드의 과정은 총 4가지로 나뉘어진다.
1. message, carrier signal의 생성
2. modulation
3. spectrum 분석
4. demodulation
일반적으로 검색에서 발견되는 modulation과 demodulation을 제외하고 spectrum 분석이 추가되어있다.
이 과정을 통해 실제 신호의 주파수가 어떻게 구성되어있고, filter를 활용해 어떤 신호를 제거하는지 확인할 수 있을 것이다.
실제 코드를 통한 과정은 아래 소스코드의 주석을 참고.
2. 소스코드 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | % clear all; close all; clc; % 기본적인 인자 선언 tmin= 0; tmax = 1; step = (tmax-tmin)/(10^3); t = tmin:step:tmax; Vm= 20; Vc= 1; fm = 5; fc= 10^2; fs = 1/step; % 이번 실험에서 쓰이는 값은 다음과 같다. m = Vm*sin(2*pi*fm*t); % Message c = Vc*cos(2*pi*fc*t); % Carrier v = m.*c; % Modulated Wave % Spectrum of Product Modulator output signal N=length(v); Z=fftshift(fft(v,N)); f=fs*[-N/2:N/2-1]/N; figure(3); plot(f,abs(Z)); % 변조한 신호를 그래프로 확인 figure(1) plot(t,v); hold on; plot(t,m,'r:'); hold on; plot(t,-m,'r:'); hold off; % demodulation과정 v = v.*c; %이 과정에는 carrier를 다시 곱해준다. % 실제 이동된 주파수 스펙트럼을 확인한다. N=length(v); Z=fftshift(fft(v,N)); f=fs*[-N/2:N/2-1]/N; figure(4); plot(f,abs(Z)); % butter함수와 filter함수를 활용해 저역통과필터를 만들어준다. [num den] = butter(1, 5/fs/2); mr = filter(num,den,v); % 추가적으로 butter함수는 bandpass 등 다양한 필터가 가능하다. % freqz(num, den, v) figure(2) subplot(2,1,1); plot(t,m); subplot(2,1,2); plot(t,mr); | cs |
3. 참고 |
https://www.youtube.com/watch?v=weG5aE6ZAB8
https://kr.mathworks.com/help/signal/ref/butter.html
https://kr.mathworks.com/help/matlab/ref/filter.html
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'---------개인공부-------- > |통신공학실습(matlab)|' 카테고리의 다른 글
[matlab] kalman-filter (0) | 2020.11.22 |
---|