MATLAB中BPSK的星座图仿真

2 篇文章 0 订阅
1 篇文章 0 订阅

  第一次写博客,肯定写不好,但是希望记录一下自己学习的过程,多多担待。
  学习无线通信,要做BPSK的星座图仿真实验,网上搜了一下,没人发资料,我就记录一下自己的过程。过两天还做16QAM的仿真,有时间再写那个的,如果我会做那个的话。
由于需要插入一些表达式,如果不会的同学,可以参考这里的链接,Markdowm公式指导手册,里面也有简明教程的链接,点过去,可以学习的。
切入正题,标题MATLAB中BPSK的星座图仿真。

一.星座图

  BPSK是怎么扯到了星座图的,来,看公式
e 2 p s k ( t ) = { A c o s w c t , 发送码元“1” − A c o s w c t , 发送码元“0” e_{2psk}(t) = \begin{cases} Acosw_ct, & \text{发送码元“1”} \\ -Acosw_ct , & \text{发送码元“0”} \end{cases} e2psk(t)={Acoswct,Acoswct,发送码元“1”发送码元“0”
我们知道 s i n w c t 和 c o s w c sinw_ct和cosw_c sinwctcoswc是正交的,可以作为信号空间的两个基,就像X轴和Y轴,可以表示任意的二维信号,这个从傅里叶级数可以看出。
 现在在以 s i n ( w c t ) 和 c o s ( w c t ) sin(w_ct)和cos(w_ct) sin(wct)cos(wct)为基的信号空间中,码元1的坐标为(A,0),码元0的坐标为(-A,0)那么还有噪声呢,它的坐标呢,如果你看过通信原理的书,就会知道经过带通滤波器的噪声信号为
ξ ( t ) = ξ c ( t ) c o s w c t − ξ c ( t ) s i n w c t \xi(t) = \xi_c(t)cosw_ct-\xi_c(t)sinw_ct ξ(t)=ξc(t)coswctξc(t)sinwct
所以噪声的坐标为 ξ c ( t ) \xi_c(t) ξc(t),它的均值为零,方差为 σ \sigma σ,这个的产生要用函数randn( )产生。
 星座图为我们理解调制解调信号提供了新的角度,仅从坐标图就可看出信号的能量,两个信号的距离,非常好用的。
 现在给matlab的代码,

%运行时间略微有些长,
clc,clear
%比特流的长度,不要太大,容易死机
Maxbit = 1000000;
Eb = 1;
for i=1:15                        % 信噪比从115dB
  for cnt=1:10              	  %对于每个信噪比,进行10次实验,最后求平均 
       b = rand(1,Maxbit);         %随机数据
       b_bin = round(b);            % 0 1 比特流      
       b2 = sign(b_bin - 0.5);     %调制后的 -1+1 比特流
      SNR = 10 ^( 0.1 * i);           %信噪比
      N0 = Eb/SNR;
      Sigma = sqrt(N0/2);
      % 高斯噪声信号,注意用的函数是randn,而不是rand
      Noise = Sigma*randn(1,Maxbit);
      % snt 调制信号与噪声叠加后的信号
      Snt = b2 + Noise;
      % 解调过程,抽样判决,<0,判为-1>0,判为+1
      res(Snt<0) = -1;
      res(Snt>=0) = 1;
      % Snt .* b2,解调正确,相乘结果为+1,若发生误码,结果为-1
      St = res .* b2;
      % err为误码的个数
      err(cnt) = length(find(St<0));
  end
  % Pb计算信噪比为 i dB 时的误比特率
  Pb(i) = (mean(err)/Maxbit)*100;
end
%打印误码率,注意这个函数
semilogy(Pb); 
xlabel('信噪比(dB)');
ylabel('误码率Pe')

我想说啥呢,就是最后打印误码率的函数,我开始用的是plot( ),就是下图
plot( )画的图
跟书上不一样,后来我发现他们跟书上一样的,用的是semilogy( ) 函数,然后图就是这个了。
正确的函数画的图
semilogy()的纵轴坐标是 1 0 i 10^i 10i,看到了吧,就是这样的。
 到这里,说完了。
 第一次写,用了老长时间呢,顺便学了Markdown的用法,还有呢,matlab也是老长时间没用过了,老多函数都忘了,还有啊,BPSK的星座图也不大会,一切都是昨天下午临时干的,最耗时就是找出semilogy( )这个函数,花了4个小时呢,真实的,浪费时间啊。

  • 11
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值