Matlab 模擬BPSK調製下傳輸的誤位元速率
阿新 • • 發佈:2019-01-04
N = 1000000;
for i=1:N
if rand <.5
s(i)=-1;
else
s(i)=1;
end
end
% 產生白噪聲
Variance = 1;
b=randn(1,N);
% enery per bit to noise spectral density ratio
EbNo=[-3:1:10];
% 針對上條指令有14種情況
for j = 1:14
%加入白噪聲
sigma(j) = power(10,(-EbNo(j)/20))/ sqrt (2);
for i = 1:N
n(i)=sigma(j)*b(i);
y(i)=s(i)+n(i);
end
% 解碼
Nombreerreur(j) = 0;
for i=1:N
if y(i) > 0
Demo(i) = 1;
else
Demo(i) = -1;
end
% 統計誤碼數和誤位元速率
if Demo(i) ~= s(i)
Nombreerreur(j) = Nombreerreur(j) + 1;
end
end
Tauxderreur(j) = Nombreerreur(j) / N;
TauxderreurTheorique(j) = erfc(sqrt(power(10,EbNo(j)/10)))/2;
end
%比較實際誤位元速率和理論誤位元速率曲線
figure
for i=1:N
if rand <.5
s(i)=-1;
else
s(i)=1;
end
end
% 產生白噪聲
Variance = 1;
b=randn(1,N);
% enery per bit to noise spectral density ratio
EbNo=[-3:1:10];
% 針對上條指令有14種情況
for j = 1:14
%加入白噪聲
sigma(j) = power(10,(-EbNo(j)/20))/ sqrt (2);
for i = 1:N
n(i)=sigma(j)*b(i);
y(i)=s(i)+n(i);
end
% 解碼
Nombreerreur(j) = 0;
for i=1:N
if y(i) > 0
Demo(i) = 1;
else
Demo(i) = -1;
end
% 統計誤碼數和誤位元速率
if Demo(i) ~= s(i)
Nombreerreur(j) = Nombreerreur(j) + 1;
end
end
Tauxderreur(j) = Nombreerreur(j) / N;
TauxderreurTheorique(j) = erfc(sqrt(power(10,EbNo(j)/10)))/2;
end
%比較實際誤位元速率和理論誤位元速率曲線
figure