?? matlab做誤碼率.txt
字號:
可以實現單極性雙極性在不同信噪比的條件下對誤碼率的比較。
%生成單極性方波
function x=randn_ab(N);
N=10000;
x=randint(1,N);
for i=1:length(x);
fs=100;
t=0:1/fs:length(x);
j=1:fs;
if(x(i)==1);
y1((i-1)*fs+j)=1;
else
y1((i-1)*fs+j)=0;
end;
end
y1=[y1,x(i)];
%高斯白躁聲與原信號疊加
SNR=1:1:10;
for k=1:1:length(SNR);
n1=awgn(y1,SNR(k));
%加入判決電平恢復信號
fs=100;
for i=1:length(x);
for j=1:fs;
g1(i)=mean(n1((i-1)*fs+j));
if(g1(i)>=0.5);
for j=1:fs;
z1((i-1)*fs+j)=1;
end
else
for j=1:fs;
z1((i-1)*fs+j)=0;
end
end
end
end
z1=[z1,g1(i)];
%判斷誤碼率
for i=1:length(x);
if(g1(i)>=0.5);
g1(i)=1;
else
g1(i)=0;
end
end;
d=xor(x,g1);
r=0;
h1=0;
for i=1:length(d);
if(d(i)==1);
r=r+1;
end
end
h1=h1+r %h為誤碼個數
p1(k)=h1/N %p為誤碼率
end
%生成雙極性方波
N=10000;
x=randint(1,N);
for i=1:length(x);
fs=100;
t=0:1/fs:length(x);
j=1:fs;
if(x(i)==1);
y2((i-1)*fs+j)=1;
else
y2((i-1)*fs+j)=-1;
end;
end
y2=[y2,x(i)];
%高斯白躁聲與原信號疊加
SNR=1:1:10;
for k=1:1:length(SNR)
n2=awgn(y2,SNR(k));
%加入判決電平
fs=100;
for i=1:length(x);
for j=1:fs;
g2(i)=mean(n2((i-1)*fs+j));
if(g2(i)>=0);
for j=1:fs;
z2((i-1)*fs+j)=1;
end
else
for j=1:fs;
z2((i-1)*fs+j)=-1;
end
end
end
end
z2=[z2,g2(i)];
%判斷誤碼率
for i=1:length(x);
if(g2(i)>=0);
g2(i)=1;
else
g2(i)=0;
end
end;
d=xor(x,g2);
r=0;
h2=0;
for i=1:length(d)
if(d(i)==1);
r=r+1; %r為誤碼個數
end
end
h2=h2+r %h為誤碼個數
p2(k)=h2/N %p為誤碼率
end
semilogy(SNR,p1,'b',SNR,p2,'r')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -