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