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

📄 4dbpsk系统的源码.txt

📁 关于4dbpsk系统的源码
💻 TXT
字号:
说明,下载了一些有关4dbpsk系统的设计实现源码
下载文件列表包含以下一些文件(不知全是4dpsk的,还是只有4dpsk\dpsk4.m是):
Pack : 659364dpsk.rar
4dpsk\cm_dpske.m
4dpsk\cm_sm34.m
4dpsk\dpsk4.m
4dpsk\gngauss.m
4dpsk\Qfunct.m
4dpsk




cm_dpske.m   

function[enc_comp]=cm_dpske(E,M,mapping,sequence) 
%[enc_comp]=cm_dpske(E,M,mapping,sequence) 
%            CM_DPSKE以微分方式编码一个序列 
%            E是平均能量,M是星座点的数目 
%            而mapping是一个定义星座点如何分布的向量 
%            sequence是未编码的二进制数据序列 
k=log2(M); 
N=length(sequence); 
%如果N不可为k整除,填充零使其可被k整除 
remainder=rem(N,k); 
if (remainder~=0), 
  for i=N+1:N+k-remainder,    
     sequence(i)=0; 
  end; 
  N=N+k-remainder; 
end; 
theta=0; 
for i=1:k:N, 
   index=0; 
   for j=i:i+k-1, 
      index=2*index+sequence(j); 
   end; 
   index=index+1; 
   theta=mod(2*pi*mapping(index)/M+theta,2*pi); 
   enc_comp((i+k-1)/k,1)=sqrt(E)*cos(theta); 
   enc_comp((i+k-1)/k,2)=sqrt(E)*sin(theta); 
end; 
       



cm_sm34.m

function[p]=cm_sm34(snr_in_dB) 
%[p]=cm_sm34(snr_in_dB) 
%     CM_SM34求出以dB为单位的给定信噪比的比特误码率和符号误码率 
N=5000; 
E=1;                      %每符号能量 
snr=10^(snr_in_dB/10);    %信噪比 
sgma=sqrt(E/(4*snr));     %噪声方差 
%随后为数据源的产生 
for i=1:2*N, 
    temp=rand;            %在区间(0,1)间的一个均匀随机变量 
    if (temp<0.5), 
       dsource(i)=0; 
    else 
       dsource(i)=1;  
    end; 
end; 
%随后为数据源的差分编码 
mapping=[0 1 3 2]; 
M=4; 
[diff_enc_output]=cm_dpske(E,M,mapping,dsource); 
%接收信号 
for i=1:N 
   [n(1) n(2)]=gngauss(sgma); 
   r(i,:)=diff_enc_output(i,:)+n; 
end; 
%判决、误码率的计算 
numoferr=0; 
prev_theta=0; 
for i=1:N, 
  theta=angle(r(i,1)+j*r(i,2)); 
  delta_theta=mod(theta-prev_theta,2*pi); 
  if ((delta_theta7*pi/4)), 
    deris=[0 0]; 
  elseif (delta_theta<3*pi/4), 
    deris=[0 1]; 
  elseif (delta_theta<5*pi/4), 
    deris=[1 1]; 
  else 
    deris=[1 0]; 
  end; 
  prev_theta=theta; 
  %如果判决不对,计错器加一 
  if ((deris(1)~=dsource(2*i-1)) | (deris(2)~=dsource(2*i))), 
     numoferr=numoferr+1; 
  end; 
end; 
p=numoferr/N; 
  
 


 
dpsk4.m   

clear all 
echo on 
SNRindB1=0:2:12; 
SNRindB2=0:0.1:12; 
for i=1:length(SNRindB1), 
     smld_err_prb(i)=cm_sm34(SNRindB1(i));  %仿真误码率 
end; 
for i=1:length(SNRindB2), 
     SNR=exp(SNRindB2(i)*log(10)/10);       %信噪比 
     theo_err_prb(i)=2*Qfunct(sqrt(SNR));   %理论符号误码率 
end; 
%随后为绘图曲线 
semilogy(SNRindB1,smld_err_prb,'*'); 
hold 
semilogy(SNRindB2,theo_err_prb); 
 
     



gngauss.m   

function[gsrv1,gsrv2]=gngauss(m,sgma) 
% m--mean,  sgma--standard deviation  
if nargin==0, 
    m=0;sgma=1; 
elseif nargin==1, 
    sgma=m;m=0; 
end; 
u=rand; 
z=sgma*(sqrt(2*log(1/(1-u))));     %a Rayleigh distributed random variable 
u=rand; 
gsrv1=m+z*cos(2*pi*u); 
gsrv2=m+z*sin(2*pi*u); 
 


Qfunct.m ????????????????????
 
 

⌨️ 快捷键说明

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