📄 psk4.m
字号:
% function psk4
clc
clear,close all
fc=13.5e3;
fs=50*44.1e3;
L=380+1;
N=1000;
E=1;
snr=10^(20/10);
sigma=sqrt(E/(4*snr));
m=0;
T=2e-2;
number=fs*T;
t=0:1/fs:T-1/fs;
cos_ref=cos(2*pi*fc*t);
sin_ref=-sin(2*pi*fc*t);
code_00=cos(2*pi*fc*t+pi/4);
code_10=cos(2*pi*fc*t+3*pi/4);
code_11=cos(2*pi*fc*t+5*pi/4);
code_01=cos(2*pi*fc*t+7*pi/4);
y=randint(1,N,2);
y1=zeros(N/2,4);
for i=1:2:N
if y(i)==0&y(i+1)==0
y1((i+1)/2,1)=1;
elseif y(i)==1&y(i+1)==0
y1((i+1)/2,2)=1;
elseif y(i)==1&y(i+1)==1
y1((i+1)/2,3)=1;
elseif y(i)==0&y(i+1)==1
y1((i+1)/2,4)=1;
end
end
y11=y1(:,1)*code_00+y1(:,2)*code_10+y1(:,3)*code_11+y1(:,4)*code_01;
signal=reshape(y11',1,N/2*number);
inr=y11*(cos_ref)';
ini=y11*(sin_ref)';
input=inr'+j*ini';
iii=[ini',inr'];
% scatterplot(iii)
% % QPSK spectral density
% f_de=abs(fft(signal));
% maxf=max(f_de);
% f_de=20*log10(f_de/maxf);
% figure,plot((0:length(f_de)-1)*fs/(length(f_de)),f_de)
noise=randn(size(signal));
z=signal;
% z=z+noise;
% z=z+noise-0.67*[zeros(1,300) z(1:length(z)-300)]+0.55*[zeros(1,380) z(1:length(z)-380)];
% yy=reshape(z',number,N/2);
% yy=yy';
% dr=yy*(cos_ref)';
% di=yy*(sin_ref)';
% d=[dr,di];
% % scatterplot(d)
% ss=dr'+j*di';
% ddd=[dr',di'];
%
% % junheng
% w=zeros(1,L);
% x=zeros(1,L);
% M=5000;
% mu=0.02;
% clear i
% for i=1:M
% x=[z(i),x(1:L-1)];
% p(i)=x*w';
% ee(i)=signal(i)-p(i);
% w=w+mu*ee(i)*x;
% end
% plot(abs(ee).^2)
% ylabel('MSE')
% %
% out=filter(w,1,z);
% outt=reshape(out,number,N/2);
%
outt=reshape(z,number,N/2);
outt=outt';
outr=outt*(cos_ref)';
outi=outt*(sin_ref)';
outr=outr';
outi=outi';
clear i
for i=1:N/2
if outr(i)>=0&outi(i)>0
output(1,i)=0;
output(2,i)=0;
elseif outr(i)<0&outi(i)>=0
output(1,i)=1;
output(2,i)=0;
elseif outr(i)<=0&outi(i)<0
output(1,i)=1;
output(2,i)=1;
else
output(1,i)=0;
output(2,i)=1;
end
end
xx=reshape(output,1,N);
[num,ratio]=biterr(y,xx)
out=[outr',outi'];
scatterplot(out)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -