• 大小: 5KB
    文件类型: .m
    金币: 2
    下载: 0 次
    发布日期: 2024-02-02
  • 语言: Matlab
  • 标签:

资源简介

: 产生等概率且相互独立的二进制序列,画出波形; 产生均值为0,方差为1的加性高斯随机噪声; 进行8PSK调制,画出波形; 进行蒙特卡罗分析; 解调8PSK,画出眼图。

资源截图

代码片段和文件信息


f=150             %抽样频率
g=(sign(rand(1150)-0.5)+1)/2 %产生二进制序列
sn=randn(150*length(g)); %产生加性高斯白噪声
dt=2*pi/149;
t=0:dt:2*pi;
si=[];co=[];     %si为正交分量,co为同相分量
sit=[];sqt=[];   %sit为同相分量幅度,sqt为正交分量幅度
sb2=[];    %输入二进制序列

%8PSK调制过程

for n=1:3:length(g); %一次取3个二进制数
if g(n)==0 && g(n+1)==0 && g(n+2)==0
%b1b2b3=000时正交分量和同相分量的幅值
        it=-0.383*ones(1150);
        qt=-0.924*ones(1150);  
        b2=[zeros(150) zeros(150) zeros(150)]
    elseif g(n)==0 && g(n+1)==0 && g(n+2)==1 %b1b2b3=001时
        it=-0.924*ones(1150);
        qt=-0.383*ones(1150);
        b2=[zeros(150) zeros(150) ones(150)]
    elseif g(n)==1 && g(n+1)==0 && g(n+2)==0
        it=0.383*ones(1150);
        qt=-0.924*ones(1150); 
        b2=[ones(150) zeros(150) zeros(150) ]
    elseif g(n)==1 && g(n+1)==0  && g(n+2)==1
        it=0.924*ones(1150);
        qt=-0.383*ones(1150);  
        b2=[ones(150) zeros(150) ones(150) ]
    elseif g(n)==0 && g(n+1)==1 && g(n+2)==0
        it=-0.383*ones(1150);
        qt=0.924*ones(1150); 
        b2=[zeros(150) ones(150) zeros(150)  ]
    elseif g(n)==0 && g(n+1)==1 && g(n+2)==1
        it=-0.924*ones(1150);
        qt=0.383*ones(1150); 
        b2=[zeros(150) ones(150) ones(150)  ]
    elseif g(n)==1 && g(n+1)==1 && g(n+2)==1
        it=0.924*ones(1150);
        qt=0.383*ones(1150);  
        b2=[ones(150) ones(150) ones(150)  ]
    elseif g(n)==1 && g(n+1)==1 && g(n+2)==0
        it=0.383*ones(1150);
        qt=0.924*ones(1150);
        b2=[ones(150) ones(150) zeros(150)  ]
    end
    sb2=[sb2 b2];
    c=cos(f*t);   s=sin(f*t);
    sit=[sit it]; sqt=[sqt qt];   
    co=[co c];    si=[si s];  
end
psk=sit.*co+sqt.*si; %调制后的8psk信号

%画图
figure(1);

plot(sb2‘LineWidth‘1.5);
grid on;title(‘二进制序列(信源)‘);
axis([0 2000 -1.5 1.5]);
set(gca‘Xtick‘[150:150:1800]);
xlabel(‘(a)      t/(ts/150)‘);
figure(2);
plot(psk‘LineWidth‘1.5);
grid on;title(‘8PSK 调制 ‘);axis([0 2000 -1.5 1.5]);
xlabel(‘(b)      t/(Ts/150)‘);

%8PSK的解调

rpsk=psk+sn; %加入加性高斯白噪声
rs=[]; %rs用来存放解调后的二进制序列
for  m=1:150:50*length(g)-150;
rpsk1=rpsk(m:m+149); %取一个码元
sit=rpsk1.*cos(f*t);
it=cumtrapz(sit)*dt;
it=it(end); %相关后得的I路电平
if it>0 %对得到的电平进行判决
rs=[rs ones(150)];
elseif it<0
    rs=[rs zeros(150)];
end
sqt=rpsk1.*sin(f*t);
qt=cumtrapz(sqt)*dt;
qt=qt(end)

评论

共有 条评论

相关资源