주요 콘텐츠

convertSNR

SNR 값 변환

R2022a 이후

    설명

    y = convertSNR(x,inputmode)는 입력 신호 대 잡음비 값 x를 SNR로 변환합니다.

    예제

    y = convertSNR(x,inputmode,outputmode)는 입력 신호 대 잡음비 값 xoutputmode로 지정된 비율로 변환합니다. 자세한 내용은 알고리즘 항목을 참조하십시오.

    y = convertSNR(x,inputmode,Name=Value)는 추가 이름-값 인수를 지정합니다.

    예제

    예제

    모두 축소

    랜덤 데이터 심볼과 8-PSK 변조 신호를 생성합니다.

    d = randi([0 7],100,1);
    M = 8;                  % 8-PSK
    k = log2(M);            % bits per symbol
    psk = pskmod(d,M);

    변조 신호에 6dB Eb/No 값에 상응하는 잡음을 추가합니다. 이렇게 하기 위해 먼저 Eb/No 값을 SNR로 변환합니다.

    EbNo = 6;
    SNR = convertSNR(EbNo,'ebno',BitsPerSymbol=k)
    SNR = 
    10.7712
    
    y = awgn(psk,SNR);

    잡음 성분이 있는 신호와 없는 신호를 플로팅합니다.

    figure
    plot(real(psk));
    hold on
    plot(real(y))
    legend("Perfect Signal","Noisy Signal")

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Perfect Signal, Noisy Signal.

    시뮬레이션 파라미터를 설정합니다.

    M = 16;        % Modulation order
    k = log2(M);   % bits per symbol
    nSamp = 4;     % Number of samples

    올림 코사인 송신 및 수신 필터를 만듭니다.

    txfilter = comm.RaisedCosineTransmitFilter( ...
        OutputSamplesPerSymbol=nSamp);
    rxfilter = comm.RaisedCosineReceiveFilter( ...
        InputSamplesPerSymbol=nSamp, ...
        DecimationFactor=nSamp);

    랜덤 데이터 심볼과 필터링된 16-QAM 변조 신호를 생성합니다.

    d = randi([0 1],1000,1);
    modsig = qammod(d,M,InputType="bit");
    txsig = txfilter(modsig);

    변조 신호에 10dB Eb/N0에 상응하는 잡음을 추가합니다. 이렇게 하기 위해 먼저 Eb/N0 값을 SNR로 변환합니다.

    EbN0 = 10;
    snr = convertSNR(EbN0,"ebno", ...
        BitsPerSymbol=k, ...
        SamplesPerSymbol=nSamp, ...
        CodingRate=1/3)
    snr = 
    5.2288
    
    [sig2,var] = awgn(txsig,snr);
    rxsig = rxfilter(sig2);
    demodsig = qamdemod(rxsig,M, ...
        OutputType="llr", ...
        NoiseVariance=var);

    복조된 QAM 신호를 플로팅합니다.

    plot(demodsig,'.')
    xlabel('Bit Number')
    ylabel('LLR')

    Figure contains an axes object. The axes object with xlabel Bit Number, ylabel LLR contains a line object which displays its values using only markers.

    부반송파당 SNR을 사용되지 않는 부반송파가 있는 OFDM 심볼의 SNR 값으로 변환합니다.

    QPSK 변조와 OFDM 변조 관련 변수를 정의합니다.

    M = 4;                  % Modulation order for QPSK
    SNRsc = 15;             % SNR per subcarrier
    nfft = 128;             % Total number of subcarriers
    cplen = 16;             % Cyclic prefix length
    nnull = 30;             % Number of null subcarriers
    nullidx = ...           % Null indices
        [1:nnull nfft/2+1 nfft-nnull+1:nfft]'; 
    nsc = nfft-(2*nnull)-1; % Number of active subcarriers

    랜덤 데이터를 QPSK로 변조합니다.

    data = randi([0 3],nsc,100);
    x = qammod(data,M,UnitAveragePower=true);

    신호를 OFDM으로 변조하고 단위 전력이 되도록 정규화합니다.

    txscale = nfft/sqrt(nsc);
    y = txscale * ofdmmod(x,nfft,cplen,nullidx);

    부반송파당 SNR에 대한 등가 SNR 값을 계산한 후 OFDM 변조 신호를 AWGN 채널에 통과시킵니다.

    SNR = convertSNR(SNRsc,'snrsc',...
        FFTLength=nfft,NumActiveSubcarriers=nsc);
    r = awgn(y,SNR);

    SNR 값을 계산하고 표시합니다.

    n = r - y;
    fprintf('SNR of OFDM symbols = %1.1f dB\n', 10*log10(var(y)/var(n)));
    SNR of OFDM symbols = 12.3 dB
    
    Ssc = var(y) / nsc;
    Nsc = var(n) / nfft;
    fprintf('SNR per subcarrier = %1.1f dB\n', 10*log10(Ssc/Nsc));
    SNR per subcarrier = 15.1 dB
    

    입력 인수

    모두 축소

    입력값(단위: dB)으로, 숫자형 행 벡터로 지정됩니다.

    데이터형: double

    x의 입력 모드로, "ebno", "esno", "snr" 또는 "snrsc"로 지정됩니다.

    • "ebno"x는 비트당 에너지 대 잡음 파워 스펙트럼 밀도의 비(Eb/N0)입니다.

    • "esno"x는 심볼당 에너지 대 잡음 파워 스펙트럼 밀도의 비(Es/N0)입니다.

    • "snr"x는 SNR입니다.

    • "snrsc"x는 다중 반송파 변조 방식의 부반송파당 SNR입니다.

    자세한 내용은 알고리즘 항목을 참조하십시오.

    y의 출력 모드로, "ebno", "esno", "snr" 또는 "snrsc"로 지정됩니다.

    • "ebno"y는 비트당 에너지 대 잡음 파워 스펙트럼 밀도의 비(Eb/N0)입니다.

    • "esno"y는 심볼당 에너지 대 잡음 파워 스펙트럼 밀도의 비(Es/N0)입니다.

    • "snr"y는 SNR입니다.

    • "snrsc"y는 다중 반송파 변조 방식의 부반송파당 SNR입니다.

    자세한 내용은 알고리즘 항목을 참조하십시오.

    이름-값 인수

    모두 축소

    선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

    R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

    예: y = convertSNR(x,inputmode,outputmode,SamplesPerSymbol=2)

    심볼당 샘플 수로, 양의 정수로 지정됩니다. 다음과 같은 경우 함수는 SamplesPerSymbol 값을 무시합니다.

    • inputmode"ebno"로, outputmode"esno"로 설정한 경우.

    • inputmode"esno"로, outputmode"ebno"로 설정한 경우.

    데이터형: double

    심볼당 비트 수로, 양의 정수로 지정됩니다. 다음과 같은 경우 함수는 BitsPerSymbol 값을 무시합니다.

    • inputmode"esno"로, outputmode"snr"로 설정한 경우.

    • inputmode"snr"로, outputmode"esno"로 설정한 경우.

    데이터형: double

    코딩율로, (0, 1] 범위의 스칼라로 지정됩니다. 다음과 같은 경우 함수는 CodingRate 값을 무시합니다.

    • inputmode"esno"로, outputmode"snr"로 설정한 경우.

    • inputmode"snr"로, outputmode"esno"로 설정한 경우.

    데이터형: double

    다중 반송파 변조 신호의 총 부반송파 개수로, 양의 정수로 지정됩니다. "snrsc"inputmode 또는 outputmode 설정이 아닌 경우 함수는 FFTLength 값을 무시합니다.

    데이터형: double

    활성 부반송파 개수로, 양의 정수로 지정됩니다. 활성 부반송파 개수는 FFTLength보다 작거나 같아야 합니다. "snrsc"inputmode 또는 outputmode 설정이 아닌 경우 함수는 NumActiveSubcarriers를 무시합니다.

    데이터형: double

    출력 인수

    모두 축소

    출력값(단위: dB)으로, 숫자형 값으로 구성된 행 벡터로 반환됩니다. 자세한 내용은 알고리즘 항목을 참조하십시오.

    알고리즘

    다음 표에서는 입력 모드에서 출력 모드로의 유효한 변환을 보여줍니다.

    inputmodeoutputmode변환
    "ebno""snr"SNR = Eb / N0 + 10log10((Nbps×R) / Nsps)
    "snr""ebno"Eb / N0 = SNR – 10log10((Nbps×R) / Nsps)
    "ebno""esno"Es / N0 = Eb / N0 + 10log10(Nbps×R)
    "esno""ebno"Eb / N0 = Es / N0 – 10log10(Nbps×R)
    "esno""snr"SNR = Es / N0 – 10log10(Nsps)
    "snr""esno"Es / N0 = SNR + 10log10(Nsps)
    "snrsc""snr"SNR = SNRSC + 10log10(NSC / FFTLen)
    "snr""snrsc"SNRSC = SNR – 10log10(NSC / FFTLen)

    여기서

    • NbpsBitsPerSymbol 값입니다.

    • NspsSamplesPerSymbol 값입니다.

    • RCodingRate 값입니다.

    • FFTLenFFTLength 값입니다.

    • NSCNumActiveSubcarriers 값입니다.

    • Eb / N0inputmode"ebno"로 설정한 경우 x 값 입력이고 outputmode"ebno"로 설정한 경우 y 값 출력입니다.

    • Es / N0inputmode"esno"로 설정한 경우 x 값 입력이고 outputmode"esno"로 설정한 경우 y 값 출력입니다.

    • SNRinputmode"snr"로 설정한 경우 x 값 입력이고 outputmode"snr"로 설정한 경우 y 값 출력입니다.

    • SNRSCinputmode"snrsc"로 설정한 경우 x 값 입력이고 outputmode"snrsc"로 설정한 경우 y 값 출력입니다.

    버전 내역

    R2022a에 개발됨

    모두 확장

    참고 항목