Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

awgn

신호에 백색 가우스 잡음 추가

설명

Y = awgn(X,snr)은 벡터 신호 X에 백색 가우스 잡음을 추가합니다. 이 구문에서는 X의 전력을 0dBW로 간주합니다. 가산성 백색 가우스 잡음(AWGN)에 대한 자세한 내용은 AWGN이란? 항목을 참조하십시오.

예제

Y = awgn(X,snr,signalpower)는 입력 신호 전력 값(단위: dBW)을 받습니다. 잡음을 추가하기 전에 X의 전력을 측정하려면 signalpower'measured'로 지정하십시오. 'measured' 옵션을 사용하면 페이딩으로 인해 입력 신호 전력이 시간에 따라 변하고 채널의 코히어런스 시간이 입력 지속 기간보다 큰 경우 루프에서 반복되는 awgn 함수 호출에 대해 요청된 평균 SNR이 생성되지 않습니다.

예제

Y = awgn(X,snr,signalpower,randobject)는 정규분포 랜덤 잡음 샘플을 생성하기 위해 추가로 난수 스트림 객체도 받습니다. 반복 가능한 잡음 샘플을 생성하는 방법에 대한 자세한 내용은 항목을 참조하십시오.

예제

Y = awgn(X,snr,signalpower,seed)는 입력 신호에 백색 가우스 잡음을 추가하는 데 사용되는 정규분포 난수 생성기를 초기화하기 위한 시드값을 지정합니다.

Y = awgn(___,powertype)은 위에 열거된 구문에 나와 있는 입력 인수와 함께 신호 및 잡음 전력 유형을 'dB' 또는 'linear'로 지정합니다. SNR과 Es/N0 및 Eb/N0과 같은 잡음의 상대 전력에 대한 기타 척도 사이의 관계에 대한 자세한 내용은 AWGN 채널 잡음 수준 항목을 참조하십시오.

[Y,var] = awgn(___)는 랜덤 잡음 샘플을 생성하는 데 사용되는 총 잡음 분산도 반환합니다.

예제

모두 축소

톱니파를 만듭니다.

t = (0:0.1:60)';
x = sawtooth(t);

백색 가우스 잡음을 추가하고 결과를 플로팅합니다.

y = awgn(x,10,'measured');
plot(t,[x y])
legend('Original Signal','Signal with AWGN')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original Signal, Signal with AWGN.

가우스 잡음이 있는 상태에서 비사각형 16진 성상도를 사용하여 데이터를 송수신합니다. 잡음이 포함된 성상도의 산점도 플롯을 표시하고 두 개의 서로 다른 SNR에 대해 심볼 오류율(SER)을 추정합니다.

전화선 모뎀용 V.29 표준을 기반으로 16-QAM 성상도를 만듭니다.

c = [-5 -5i 5 5i -3 -3-3i -3i 3-3i 3 3+3i 3i -3+3i -1 -1i 1 1i];
sigpower = pow2db(mean(abs(c).^2));
M = length(c);

랜덤 심볼을 생성합니다.

data = randi([0 M-1],2000,1);

genqammod 함수를 사용하여 데이터를 변조합니다. 사용자 지정 성상도가 사각형이 아니므로 일반적인 QAM 변조가 필요합니다.

modData = genqammod(data,c);

신호를 SNR이 20dB인 AWGN 채널에 통과시킵니다.

rxSig = awgn(modData,20,sigpower);

수신된 신호와 기준 성상도 c의 산점도 플롯을 표시합니다.

h = scatterplot(rxSig);
hold on
scatterplot(c,[],[],'r*',h)
grid
hold off

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains 2 objects of type line. One or more of the lines displays its values using only markers This object represents Channel 1.

genqamdemod 함수를 사용하여 수신된 신호를 복조합니다. 심볼 오류의 개수와 SER을 확인합니다.

demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 4
ser = 0.0020

SNR이 10dB인 AWGN 채널을 사용하여 송신 및 복조 과정을 반복합니다. 감소된 SNR에 대한 SER을 확인합니다. 예상대로 SNR이 감소하면 성능이 저하됩니다.

rxSig = awgn(modData,10,sigpower);
demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 457
ser = 0.2285

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

M = 4;
k = log2(M);
snr = 3;
data = randi([0 M-1],2000,1);
x = pskmod(data,M);

난수 생성기 시드값을 설정합니다.

seed = 12345;

awgn 함수를 호출하기 전에 rng 함수를 사용하여 반복 가능한 랜덤 잡음을 생성합니다.

rng(seed);
y = awgn(x,snr);

비트 오류를 계산합니다.

dataHat = pskdemod(y,M);
numErr1 = biterr(data,dataHat,k)
numErr1 = 309

난수 생성기 시드값을 재설정합니다.

rng(seed);

PSK 신호를 복조하고 비트 오류를 계산합니다.

y = awgn(x,snr);
dataHat = pskdemod(y,M);
numErr2 = biterr(data,dataHat,k)
numErr2 = 309

numErr1numErr2를 비교합니다. 난수 생성기 시드값을 재설정한 후에도 오류는 동일합니다.

isequal(numErr1, numErr2)
ans = logical
   1

RandStream 객체와 reset 객체 함수를 사용하여 백색 가우스 잡음을 더한 결과를 생성합니다.

입력 신호 전력을 0dBW로 지정하고, 잡음을 추가하여 10dB의 SNR을 생성하고, 로컬 난수 스트림을 사용합니다. sigin에 백색 가우스 잡음을 두 번 추가하여 sigout1sigout2를 만듭니다. isequal을 사용하여 sigout1sigout2를 비교합니다. 난수 스트림을 재설정하지 않으면 출력값이 동일하지 않습니다.

S = RandStream('mt19937ar',Seed=5489);
sigin = sqrt(2)*sin(0:pi/8:6*pi);
sigout1 = awgn(sigin,10,0,S);
sigout2 = awgn(sigin,10,0,S);
isequal(sigout1,sigout2)
ans = logical
   0

난수 스트림 객체를 재설정하여 sigout1에 AWGN을 추가하기 전의 상태로 객체를 되돌립니다. sigin에 AWGN을 추가하여 sigout3을 만든 다음 sigout1sigout3을 비교합니다. 난수 스트림을 재설정하면 출력값이 동일합니다.

reset(S);
sigout3 = awgn(sigin,10,0,S);
isequal(sigout1,sigout3)
ans = logical
   1

입력 인수

모두 축소

입력 신호로, 스칼라, 벡터, dlarray (Deep Learning Toolbox) 객체 또는 3차원 숫자형 배열로 지정됩니다. 입력 신호의 전력은 0dBW로 간주됩니다. X가 복소수인 경우 awgn은 복소수 잡음을 추가합니다. 자세한 내용은 배열 지원 항목을 참조하십시오.

데이터형: double
복소수 지원 여부:

신호 대 잡음비(단위: dB)로, 다음으로 지정됩니다.

  • 입력 신호가 스칼라이거나 벡터인 경우 스칼라.

  • 입력 신호가 3차원 배열인 경우 스칼라 또는 벡터. 자세한 내용은 배열 지원 항목을 참조하십시오.

함수는 각 채널에 동일한 snr 값을 적용합니다. 입력 신호의 열은 다중채널 신호의 서로 다른 채널을 나타냅니다.

데이터형: double

신호 전력(단위: dBW)으로, 스칼라 또는 'measured'로 지정됩니다.

  • 스칼라 — 지정된 snr을 달성하는 데 필요한 잡음 수준을 결정하기 위해 이 값을 X의 신호 수준으로 사용합니다.

  • 'measured' — 지정된 snr을 달성하는 데 필요한 잡음 수준을 결정하기 위해 X의 신호 수준을 계산합니다. 입력 신호가 dlarray이거나 snr이 벡터인 경우에는 이 값을 사용할 수 없습니다.

입력 신호가 다중채널 신호인 경우 함수는 모든 채널의 signalpower 값을 하나의 값으로 계산합니다. 그런 다음 이 값을 사용하여 모든 채널의 잡음 수준을 계산합니다.

데이터형: double

난수 스트림 객체로, RandStream 객체로 지정됩니다. 난수 스트림 객체의 상태에 따라 randn 함수에 의해 생성되는 숫자의 시퀀스가 결정됩니다. reset (RandStream) 함수와 해당 속성을 사용하여 난수 스트림 객체를 구성합니다. 입력 신호가 dlarray인 경우 난수 스트림 객체를 지정할 수 없습니다.

반복 가능한 잡음 샘플을 생성하는 방법에 대한 자세한 내용은 항목을 참조하십시오.

난수 생성기 시드값으로, 스칼라로 지정됩니다. 입력 신호가 dlarray인 경우 시드값을 지정할 수 없습니다.

데이터형: double

신호 전력 단위로, 'dB' 또는 'linear'로 지정됩니다.

  • powertype'dB'일 때 snr은 dB로 측정되고 signalpower는 dBW로 측정됩니다.

  • powertype'linear'일 때 snr은 비율로 측정되고 signalpower는 1옴의 기준 부하를 가정하여 와트 단위로 측정됩니다.

powertype 인수를 설정하려면 snrsignalpower도 설정해야 합니다.

출력 인수

모두 축소

출력 신호로, 스칼라, 벡터 또는 dlarray (Deep Learning Toolbox) 객체로 반환됩니다. 반환되는 출력 신호는 백색 가우스 잡음이 추가된 입력 신호입니다. 입력 신호 Xdlarray이면 이 출력값 Ydlarray입니다.

총 잡음 분산으로, 양의 스칼라로 반환되거나 snr이 벡터인 경우 벡터로 반환됩니다. 함수는 잡음 분산을 사용하여 랜덤 잡음 샘플을 생성합니다.

세부 정보

모두 축소

AWGN이란?

가산성 백색 가우스 잡음(AWGN)은 수신기의 RF 프론트엔드의 전자 운동을 나타내는 간단한 잡음 모델입니다. 이름에서 알 수 있듯이 신호에 잡음이 추가됩니다. 잡음의 스펙트럼이 전체 샘플링 대역폭에 걸쳐 평탄하기 때문에 백색 잡음이라고 합니다. 가시 광선 스펙트럼의 모든 주파수에 걸쳐 스펙트럼 파워 레벨이 동일할 때 흰색으로 보이는 것과 유사합니다. 잡음의 진폭이 정규 확률 분포로 모델링될 수 있기 때문에 가우스 잡음입니다.

AWGN 채널은 일반적으로 페이딩, 다중 경로 및 간섭과 같은 일반적인 지상파 손상을 겪지 않기 때문에 위성 통신 채널을 모델링하는 데 자주 사용됩니다. AWGN 채널은 지상파 링크의 비트 오류율 성능에 대한 최고 조건의 경계를 설정하므로 지상파 무선 링크 분석을 위한 시작점으로 적합합니다.

배열 지원

awgn 함수에서 입력 신호 X는 숫자형 배열, dlarray (Deep Learning Toolbox) 또는 gpuArray (Parallel Computing Toolbox)일 수 있습니다.

  • X — 입력 신호는 최대 3차원 배열일 수 있으며, Ns×Nc×Nb 배열로 지정됩니다.

    Ns는 샘플 개수, Nc는 채널 개수, Nb는 배치 개수입니다.

  • snr은 스칼라, 또는 Nb 크기의 벡터일 수 있습니다.

  • SNR과 Es/N0 및 Eb/N0과 같은 잡음의 상대 전력에 대한 기타 척도 사이의 관계에 대한 자세한 내용은 AWGN 채널 잡음 수준 항목을 참조하십시오.

  • 반복 가능한 백색 가우스 잡음 샘플을 생성하려면 다음 중 하나를 수행하십시오.

    • awgn 함수를 호출하기 전에 rng(seed)를 사용하여 반복 가능한 랜덤 잡음을 생성합니다.

    • 입력값이 dlarray 객체인 경우를 제외하고 정적 seed 값을 awgn에 대한 입력값으로 제공합니다.

    • 입력값이 dlarray 객체인 경우를 제외하고 randobject에 대해 reset (RandStream) 함수를 사용한 후 awgn에 대한 입력값으로 전달합니다.

    • 입력값이 dlarray 객체인 경우를 제외하고 알려진 상태의 randobjectawgn에 대한 입력값으로 제공합니다. 자세한 내용은 RandStream 항목을 참조하십시오.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

함수

객체

블록