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

📄 psk4.m

📁 basic_cama 基本的CDMA仿真程序
💻 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 + -