이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
올림 코사인 필터를 사용한 펄스 성형
한 쌍의 제곱근 올림 코사인 정합 필터를 사용하여 16-QAM 신호를 필터링합니다. 신호의 Eye 다이어그램과 산점도 플롯을 플로팅합니다. 신호를 AWGN 채널에 통과시킨 후 비트 오류 수를 계산합니다.
시뮬레이션 파라미터를 설정합니다.
M = 16; % Modulation order bps = log2(M); % Bits/symbol n = 20000; % Transmitted bits sps = 4; % Samples per symbol EbNo = 10; % Eb/No (dB)
필터 파라미터를 설정합니다.
span = 10; % Filter span in symbols rolloff = 0.25; % Rolloff factor
앞에서 정의한 파라미터를 사용하여 올림 코사인 송신 및 수신 필터를 생성합니다.
txfilter = comm.RaisedCosineTransmitFilter( ... RolloffFactor=rolloff, ... FilterSpanInSymbols=span, ... OutputSamplesPerSymbol=sps); rxfilter = comm.RaisedCosineReceiveFilter( ... RolloffFactor=rolloff, ... FilterSpanInSymbols=span, ... InputSamplesPerSymbol=sps, ... DecimationFactor=sps);
올림 코사인 송신 필터 객체 txFilter
의 임펄스 응답을 플로팅합니다.
fvtool(txfilter,Analysis="impulse")
정합 필터를 통과하는 지연을 계산합니다. 군지연은 한 필터를 통과하는 필터 범위의 절반이므로 두 필터의 필터 범위와 동일합니다. 심볼당 비트 수를 곱하여 지연(단위: 비트)을 구합니다.
filtDelay = bps*span;
오류율 카운터 System object™를 생성합니다. 정합 필터를 통과하는 지연을 설명하기 위해 ReceiveDelay
속성을 설정합니다.
errorRate = comm.ErrorRate(ReceiveDelay=filtDelay);
이진 데이터를 생성합니다.
x = randi([0 1],n,1);
데이터를 변조합니다.
modSig = qammod(x,M,InputType="bit");
변조된 신호를 필터링합니다.
txSig = txfilter(modSig);
처음 1,000개 샘플의 Eye 다이어그램을 플로팅합니다.
eyediagram(txSig(1:1000),sps)
주어진 EbNo
에 대해 신호 대 잡음비(SNR)(단위: dB)를 계산합니다. awgn
함수를 사용하여 송신된 신호를 AWGN 채널에 통과시킵니다.
SNR = EbNo + 10*log10(bps) - 10*log10(sps);
noisySig = awgn(txSig,SNR,"measured");
잡음이 있는 신호를 필터링하고 산점도 플롯을 표시합니다.
rxSig = rxfilter(noisySig); scatterplot(rxSig)
필터링된 신호를 복조하고 오류 통계량을 계산합니다. 필터를 통과하는 지연은 errorRate
의 ReceiveDelay
속성에 의해 설명됩니다.
z = qamdemod(rxSig,M,OutputType="bit"); errStat = errorRate(x,z); fprintf('\nBER = %5.2e\nBit Errors = %d\nBits Transmitted = %d\n',... errStat)
BER = 1.15e-03 Bit Errors = 23 Bits Transmitted = 19960