使用SLM方法降低PAPR

使用SLM方法降低PAPR

一、基本思想

  slm算法就是对QAM信号乘以U组相位因子序列,再进行ifft得到 U组ofdm信号,选择papr最小的那一组进行发送。
  因为对于ofdm信号而言,高PAPR出现的概率很小,一般1000个ofdm信号只会有个位数papr过高的值。那SLM方法对同一个QAM信号乘以N组相位后得到U个ofdm信号,从中选择PAPR最小的进行发送,就用概率的方法将高PAPR的ofdm信号滤出在外。
PS:1. 此方法是线性操作,不会带来失真
   2. 相位因子模值为1,这样不会带来能量上的损失。

二、算法分析

  上文说到了要用模值为1的相位因子,组成随机相位因子序列,然后与QAM或者QPSK信号相乘。那么考虑影响我们结果的因素就会有两个:1.相位因子的选择。2.相位因子序列的个数。
  从这两个方面出发,做了仿真。首先对于相位因子的选择,我用了四组[1 -1],[j -j],[-1 j],[-1 -j],由于功率的计算是取模求平方所以可想而知前两组和后两组的结果将是相同的。相位因子序列的个数分别为2、3、4。(相位因子序列长度与信号长度相同,并且由每一组相位因子随机填充)
  也就是说,我们要看相位因子序列个数的影响,就要固定某一组相位因子(比如[1 -1]),相位因子序列里面都是由1、-1填充。当U=2时,选择这两组中PAPR较小的发送。当U=3时,就是3选1了。

使用SLM方法降低PAPR_第1张图片使用SLM方法降低PAPR_第2张图片![这里写图片描述](
  可以看出相位因子本身的影响没有相位因子序列个数U的影响大,U的值越大,PAPR越小。但随着U的增大,PAPR减小的趋势越来越小。

三、编程遇到的问题

1、randint(m,n,K)产生m行n列 0:K的随机数
2、repmat(x,m,n)将x复制m行n列次(如x=[1 2 3] m=2 n=2 y=[1 2   3 1 2 3;1 2 3 1 2 3])
3、 对每一行求ifft ifft(x,M,[],2)
  对每一行求最大值max(x,[],2)
  对每一行求均值mean(x,2)
4、最重大的问题:我们要做到对1000个ofdm符号,用三种不同的方法(即U的个数分别为2,3,4)。有两种方法:
 a、每产生一个ofdm信号就对这信号用三种方法处理,然后重复1000次。(即先定一个信号,循环3个方法)
 b、对1000个odfm信号,分别用三种方法(即1种先定方法,循环1000个信号)
  当用a方法时出现了错误,随着U的增加,PAPR并没有变小,而是几乎不变。反复看程序,百思不得其解。最后终于发现问题:当第一个信号用三种方法处理完之后,循环进入第二个信号,由于产生随机相位序列要用randint,导致第一个信号和第二个信号的随机相位序列发生了变化,所以出现了错误。如果要用a方法,必须提前把随机相位序列在循环前就固定。

你可能感兴趣的:(使用SLM方法降低PAPR)