MATLAB仿真 BPSK调制解调器

2024-11-06 00:23:29
推荐回答(1个)
回答(1):

  clc;
  clear;
  fc=4800;fs=12000;fb=2400;
  %要调制的数字信号
  a=randint(1,12,2);%随机产生凳埋12个“0”,“1”
  s=zeros(1,60);
  for i=1:12
  for j=1:5
  if(a(i)==0)
  s(j+(i-1)*5)=0;
  else
  s(j+(i-1)*5)=1;
  end
  end
  end

  plot(s);xlabel('基带信号');
  figure
  pwelch(s);%功率谱
  figure
  %波形成形滤野粗兄波器(平方根升余弦滚降)
  h=firrcos(14,1200,1200,4800,'sqrt');
  figure
  stem(h);xlabel('成形滤波器的单位冲击响应');

  [H,W]=freqz(h,1);
  H=abs(H);
 颂袭 figure
  plot(H);xlabel('成形滤波器的频率响应');
  s=fftfilt(h,s);
  figure

  plot(s);xlabel('通过成形滤波器后的基带信号');
  figure
  pwelch(s);%经波形成形滤波器后的功率谱
  %已调信号
  e=dmod(a,4800,2400,12000,'psk',2);%调制
  figure

  plot(e);xlabel('已调信号');
  enoise=e+randn(1,60);%enoise=e+.1*randn(1,60)不同功率的高斯白噪声
  aa=ddemod(enoise,4800,2400,12000,'psk',2);%解调
  figure
  stem(aa);xlabel('解调后的数字信号');%解调后的数字信号
  p=symerr(a,aa)/12 %误码率
  %误码率曲线
  figure
  r=-6:3:12;
  rr=10.^(r/10);
  pe1=1/2*exp(-rr);%相干解调的误码率曲线
  hold on
  plot(r,pe1,'r');grid on;
  pe2=(1-1/2*erfc(sqrt(rr))).*erfc(sqrt(rr));%差分相干解调的误码率曲线
  plot(r,pe2,'b');xlabel('bpsk,dpsk误码率曲线');
  set(gca,'XTick',-6:3:18);