[number,ratio] = biterr(x,y) は、x の要素の符号なしバイナリ表現を、y の要素の符号なしバイナリ表現と比較します。この関数は、比較の結果として異なるビット数 number と、ビット総数に対する number の比率 ratio を返します。この関数は、x と y を比較する順序をそれらのサイズに基づいて決定します。詳細は、アルゴリズムの節を参照してください。
[number,ratio] = biterr(x,y,k) は、x と y の各要素の最大ビット数 k も指定します。x または y のいずれかの要素の符号なしバイナリ表現が k 桁を超える場合、関数でエラーが発生します。
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
結果のベクトルを初期化します。
berEst = zeros(size(EbNoVec));
主処理ループには以下のステップを実行します。
バイナリ データを生成して 64 値シンボルに変換します。
データ シンボルを QAM 変調します。
AWGN チャネルを通して、変調された信号を渡します。
受信信号を復調します。
復調したシンボルをバイナリ データに変換します。
ビット誤り数を計算します。
while ループは、誤りが 200 個検出されるか、1e7 ビットが転送されるまで継続します。
for n = 1:length(EbNoVec)
% Convert Eb/No to SNR
snrdB = EbNoVec(n) + 10*log10(k);
% 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);
dataSym = bi2de(dataIn);
% QAM modulate using 'Gray' symbol mapping
txSig = qammod(dataSym,M);
% Pass through AWGN channel
rxSig = awgn(txSig,snrdB,'measured');
% Demodulate the noisy signal
rxSym = qamdemod(rxSig,M);
% Convert received symbols to bits
dataOut = de2bi(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 データ点は理論上の曲線とよく一致しています。
semilogy(EbNoVec,berEst,'*')
hold on
semilogy(EbNoVec,berTheory)
grid
legend('Estimated BER','Theoretical BER')
xlabel('Eb/No (dB)')
ylabel('Bit Error Rate')
一方の入力が行列で、もう一方の入力が列ベクトルの場合、関数は行列の各列と列ベクトルを要素ごとに比較します。行列の行数と列ベクトルの長さは等しくなければなりません。つまり、行列の次元が m 行 n 列の場合、列ベクトルの次元は m 行 1 列でなければなりません。たとえば、次の図のケース (b) を参照してください。
一方の入力が行列で、もう一方の入力が行ベクトルの場合、関数は行列の各行と行ベクトルを要素ごとに比較します。行列の列数と行ベクトルの長さは等しくなければなりません。つまり、行列の次元が m 行 n 列の場合、行ベクトルの次元は 1 行 n 列でなければなりません。たとえば、次の図のケース (c) を参照してください。
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.