⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qpsk.m

📁 QPSK详细调制解调的源码
💻 M
字号:
function QPSK
K=randint(1,240);
data=phaseshift(K);
Iphase=cos(data);
Qphase=sin(data);
D=lvbo2(Iphase);
E=lvbo2(Qphase);
D0=D';
E0=E';
D1=reshape(D0,1,[]);
E1=reshape(E0,1,[]);
f=1800;
t=1/12000:1/12000:0.05;
Icos=cos(2*pi*f*t);
Qsin=sin(2*pi*f*t);
Idata=Icos.*D1;
Qdata=Qsin.*E1;
Zdata=Idata+Qdata;
R=awgn(Zdata,10,'measured');
ID=R.*Icos;
QD=R.*Qsin;
[n,w]=buttord(1200/6000,2400/6000,1,25);
h=butter(n,w);
IDA=conv(h,ID);
QDA=conv(h,QD);
if rem(n,2)==0 
I1=IDA(n/2+1:length(IDA)-n/2);
Q1=QDA(n/2+1:length(QDA)-n/2);
else
I1=IDA((n+1)/2+1:length(IDA)-(n-1)/2);
Q1=QDA((n+1)/2+1:length(QDA)-(n-1)/2); 
end
for s=1:120,
    if I1(5*s-2)>0
        I0(s)=1/sqrt(2);
    else I0(s)=-1/sqrt(2);
    end
    if Q1(5*s-2)>0
        Q0(s)=1/sqrt(2);
    else Q0(s)=-1/sqrt(2);
    end
    if(I0(s)==1/sqrt(2) & Q0(s)==1/sqrt(2))
        angle(s)=pi/4;
    elseif(I0(s)==-1/sqrt(2) & Q0(s)==1/sqrt(2))
        angle(s)=3*pi/4;
    elseif(I0(s)==-1/sqrt(2) & Q0(s)==-1/sqrt(2))
        angle(s)=-3*pi/4;
    else angle(s)=-pi/4;
    end
end
for i=1:120,
    if angle(i)==pi/4
       mdata(2*i-1)=0;
       mdata(2*i)=0;
   elseif angle(i)==3*pi/4;
       mdata(2*i-1)=0;
       mdata(2*i)=1;
   elseif angle(i)==-3*pi/4;
       mdata(2*i-1)=1;
       mdata(2*i)=0;
   else
       mdata(2*i-1)=1;
       mdata(2*i)=1;
   end
end   
figure(1);
subplot(3,1,1);
plot(D1);
subplot(3,1,2);
plot(Idata);
subplot(3,1,3);
plot(I1);

⌨️ 快捷键说明

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