📄 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 + -