biterr
비트 오류 개수 및 비트 오류율(BER)
구문
설명
[
는 number
,ratio
,individual
] = biterr(___)x
와 y
의 2진수 비교 결과를 행렬 individual
로 반환합니다. 위에 열거된 구문에 나와 있는 입력 인수를 조합하여 지정할 수 있습니다.
예제
비트 오류율 계산
두 개의 이진 행렬을 만듭니다.
x = [0 0; 0 0; 0 0; 0 0]
x = 4×2
0 0
0 0
0 0
0 0
y = [0 0; 0 0; 0 0; 1 1]
y = 4×2
0 0
0 0
0 0
1 1
비트 오류 개수를 확인합니다.
numerrs = biterr(x,y)
numerrs = 2
열 방향 오류 개수를 계산합니다.
numerrs = biterr(x,y,[],'column-wise')
numerrs = 1×2
1 1
행 방향 오류 개수를 계산합니다.
numerrs = biterr(x,y,[],'row-wise')
numerrs = 4×1
0
0
0
2
전체 오류 개수를 계산합니다. 동작은 디폴트 동작과 동일합니다.
numerrs = biterr(x,y,[],'overall')
numerrs = 2
AWGN에서 64-QAM의 비트 오류율 추정하기
잡음이 있는 64-QAM 신호를 복조하고 임의의 Eb/No 값 범위에 대한 비트 오류율(BER)을 추정합니다. BER 추정값을 이론 값과 비교합니다.
시뮬레이션 파라미터를 설정합니다.
M = 64; % Modulation order k = log2(M); % Bits per symbol EbNoVec = (5:15); % Eb/No values (dB) numSymPerFrame = 100; % Number of QAM symbols per frame
EbN0 값을 SNR로 변환합니다.
snrdB =convertSNR(EbNoVec,"ebno","snr",BitsPerSymbol=k);
결과 벡터를 초기화합니다.
berEst = zeros(size(EbNoVec));
주 처리 루프에서는 다음 단계를 실행합니다.
이진 데이터를 생성하고 64진 심볼로 변환합니다.
데이터 심볼을 QAM 변조합니다.
AWGN 채널을 통해 변조된 신호를 전달합니다.
수신된 신호를 복조합니다.
복조된 심볼을 2진 데이터로 변환합니다.
비트 오류 개수를 계산합니다.
while
루프는 200개의 오류가 발생하거나 1e7비트가 송신될 때까지 데이터를 계속 처리합니다.
for n = 1:length(snrdB) % Reset the error and bit counters numErrs = 0; numBits = 0; while numErrs < 200 && numBits < 1e7 % Generate binary data and convert to symbols dataIn = randi([0 1],numSymPerFrame*k,1); dataSym = bit2int(dataIn,k); % QAM modulate using 'Gray' symbol mapping txSig = qammod(dataSym,M); % Pass through AWGN channel rxSig = awgn(txSig,snrdB(n),'measured'); % Demodulate the noisy signal rxSym = qamdemod(rxSig,M); % Convert received symbols to bits dataOut = int2bit(rxSym,k); % Calculate the number of bit errors nErrors = biterr(dataIn,dataOut); % Increment the error and bit counters numErrs = numErrs + nErrors; numBits = numBits + numSymPerFrame*k; end % Estimate the BER berEst(n) = numErrs/numBits; end
berawgn
함수를 사용하여 이론상의 BER 곡선을 결정합니다.
berTheory = berawgn(EbNoVec,'qam',M);
추정 BER 데이터와 이론상의 BER 데이터를 플로팅합니다. 추정 BER 데이터 점은 이론상의 곡선과 잘 일치합니다.
semilogy(EbNoVec,berEst,'*') hold on semilogy(EbNoVec,berTheory) grid legend('Estimated BER','Theoretical BER') xlabel('Eb/No (dB)') ylabel('Bit Error Rate')
입력 인수
x,y
— 비교할 입력값(별도의 인수로)
벡터 | 행렬
비교할 입력값으로, 별도의 인수로 지정되며 음이 아닌 정수 요소로 구성된 벡터 또는 행렬로 지정됩니다. 함수는 비교를 위해 x
와 y
의 각 요소를 부호 없는 2진수 표현으로 변환합니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
k
— 입력 요소의 최대 비트 수
양의 정수
x
와 y
의 입력 요소의 최대 비트 수로, 양의 정수로 지정됩니다. x
또는 y
의 요소의 2진수 표현에 필요한 비트의 수가 k
보다 크면 함수 오류가 발생합니다.
k
를 설정하지 않으면 함수는 x
와 y
의 요소 중 가장 큰 요소의 2진수 표현의 비트 수로 이 값을 설정합니다.
데이터형: single
| double
flag
— 디폴트 설정을 재정의하기 위한 플래그
'overall'
| 'row-wise'
| 'column-wise'
디폴트 설정을 재정의하기 위한 플래그로, 'overall'
, 'row-wise'
또는 'column-wise'
로 지정됩니다. 플래그는 함수가 입력 x,y
의 요소를 비교하고 출력을 계산하는 방법을 지정합니다. 자세한 내용은 알고리즘 섹션을 참조하십시오.
데이터형: string
| char
출력 인수
number
— 비트 오류 개수
음이 아닌 정수 | 정수 벡터
비트 오류 개수로, 음이 아닌 정수 또는 정수 벡터로 반환됩니다.
데이터형: single
| double
individual
— 각 개별 2진수 비교 결과
행렬
각 개별 2진수 비교의 결과로, 입력 x
와 y
중 더 큰 쪽 입력의 차원과 동일한 차원의 행렬로 반환됩니다. 각 요소는 쌍의 두 요소 간 서로 다른 비트의 개수를 나타냅니다. 자세한 내용은 알고리즘 섹션을 참조하십시오.
데이터형: single
| double
알고리즘
크기를 기반으로 입력 비교
함수는 x
와 y
의 크기를 사용하여 해당 요소를 비교하는 순서를 결정합니다.
입력이 동일한 차원의 행렬인 경우, 함수는 입력값을 요소별로 비교합니다. 이 경우
number
는 음이 아닌 정수입니다. 예를 들어 그림에서 (a)의 경우를 참조하십시오.한 입력이 행렬이고 다른 입력이 열 벡터인 경우, 함수는 행렬의 각 열을 요소별로 열 벡터와 비교합니다. 행렬의 행 개수는 열 벡터의 길이와 같아야 합니다. 즉, 행렬의 차원이 m×n인 경우 열 벡터의 차원은 m×1이어야 합니다. 예를 들어 그림에서 (b)의 경우를 참조하십시오.
한 입력값이 행렬이고 다른 입력값이 행 벡터인 경우 함수는 행렬의 각 행을 요소별로 행 벡터와 비교합니다. 행렬의 열 개수는 행 벡터의 길이와 같아야 합니다. 즉, 행렬의 차원이 m×n인 경우 행 벡터의 차원은 1× n이어야 합니다. 예를 들어 그림에서 (c)의 경우를 참조하십시오.
플래그를 기반으로 입력 비교
다음 표에는 다양한 flag
값을 기반으로 출력을 계산하는 방법이 나와 있습니다. 표에서 x
는 행렬로 간주되며 y
의 크기는 다양합니다.
y 의 크기 | flag 값 | 비교 유형 | number 값 | 총 비트 수 |
---|---|---|---|---|
행렬 | 'overall' (디폴트 값) | 요소별 | 총 비트 오류 개수 | y 의 요소 개수에 k 를 곱한 값 |
'row-wise' | x 의 m번째 행과 y 의 m번째 행 | 각 행의 비트 오류를 나타내는 요소로 구성된 열 벡터 | y 의 요소 개수에 k 를 곱한 값 | |
'column-wise' | x 의 m번째 열과 y 의 m번째 열 | 각 열의 비트 오류를 나타내는 요소로 구성된 행 벡터 | y 의 요소 개수에 k 를 곱한 값 | |
행 벡터 | 'overall' | y 와 x 의 각 행 | 총 비트 오류 개수 | x 의 요소 개수에 k 를 곱한 값 |
'row-wise' (디폴트 값) | y 와 x 의 각 행 | x 의 각 행의 비트 오류를 나타내는 요소로 구성된 열 벡터 | y 의 크기에 k 를 곱한 값 | |
열 벡터 | 'overall' | y 와 x 의 각 열 | 총 비트 오류 개수 | x 의 요소 개수에 k 를 곱한 값 |
'column-wise' (디폴트 값) | y 와 x 의 각 열 | x 의 각 열의 비트 오류를 나타내는 요소로 구성된 행 벡터 | y 의 크기에 k 를 곱한 값 |
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
버전 내역
R2006a 이전에 개발됨
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)