qpsk_performance.m

来自「QPSK调制解调误码率及误符号率」· M 代码 · 共 62 行

M
62
字号
%% QPSK误码率及误符号率
clear all;
clc;

Ebn0=0:10;
for i=1:length(Ebn0)
    sigma(i)=sqrt(10^(-Ebn0(i)/10));
end
nfr=1000;
frame=1000;
j=sqrt(-1);


for s=1:length(sigma)
for n=1:nfr
x=round(rand(1,frame));

for i=1:frame/2
    if x(2*i-1:2*i)==[0 0]
        u(i)=1;
    elseif x(2*i-1:2*i)==[0 1]
        u(i)=j;
    elseif x(2*i-1:2*i)==[1 1]
        u(i)=-1;
    else u(i)=-j;
    end
end


y=u+sigma(s)*(randn(1,frame/2)+j*randn(1,frame/2));

for i=1:length(y)
    if angle(y(i))>=(-pi/4)&angle(y(i))<(pi/4)
        y1(i)=1;
    elseif angle(y(i))>=(pi/4)&angle(y(i))<(3*pi/4)
        y1(i)=j;
    elseif angle(y(i))>=(3*pi/4)|angle(y(i))<(-3*pi/4)
        y1(i)=-1;
    else y1(i)=-j;
    end
end

for i=1:length(y1)
    if y1(i)==1
        x1(2*i-1:2*i)=[0 0];
    elseif y1(i)==j
        x1(2*i-1:2*i)=[0 1];
    elseif y1(i)==-1
        x1(2*i-1:2*i)=[1 1];
    else x1(2*i-1:2*i)=[1 0];
    end
end

symerr(n)=length(find(u~=y1));
biterr(n)=length(find(x~=x1));


end  % end n

symber(s)=sum(symerr)/(length(u)*nfr)
bitber(s)=sum(biterr)/(length(x)*nfr)
end %% end s

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?