PC-CFR原理

PC-CFR的原理是产生与峰值信号频谱相同的脉冲信号与原始信号的峰值对消,消除超过门限的峰值信号,以此来降低PARR。由于脉冲信号具有与原始信号频谱相同的特点,所以消峰后不会对邻道产生干扰。

已知条件:原始信号带宽。需要根据原始信号带宽产生相应的原型滤波器脉冲信号。

实现步骤:

1、根据设置的门限,找出超过门限的峰值信号位置。

2、根据峰值信号计算出每一个峰值的消峰因子:消峰因子a=(|x(t)|-rth)*e^(jph)) ) = (1-rth/|x(t)|)*|x(t)|*e^(jph)) = (1-rth/|x(t)|)*(I+jQ) 式中,消峰因子a,峰值信号下x(t),rth门限值,ph为峰值相位。

3、根据信号的带宽产生滤波器脉冲信号。

4、分配消峰脉冲产生器,一个脉冲产生器同一时刻只能消除一个脉冲。可设计多个脉冲产生器对多个峰值消除。

5、计算对消脉冲。对消脉冲是脉冲信号与消峰因子的乘积。

6、峰值对消。原始信号-对消脉冲。

消峰前后的对比如下图:

附matlab程序。

fs = 30.72*10^6;

th = 2*10^4;

win_len = 10;

FILTER_LEN = 127;

CPG_NUM = 6;

fd = 'din_data_q.txt';

T = load(fd);

dat_i = T;

fd = 'din_data_q.txt';

T = load(fd);

dat_q = T;

dat_iq = dat_i +1j*dat_q;

dat_len = length(dat_iq);

%峰值搜索

dat_amp = abs(dat_iq);

over_th = zeros(dat_len,1);

for i=1:dat_len

if(dat_amp(i)>th)

over_th(i) = dat_amp(i) -th;

else

over_th(i) = 0;

end

end

peaks = zeros(dat_len,1);

peaks_amp = zeros(dat_len,1);

peaks_th_amp = zeros(dat_len,1);

peaks_tmp = zeros(win_len,1);

i=1;

while i <= dat_len

if(over_th(i)>0)

peaks_tmp = dat_amp(i:i+win_len-1);

[peak,index] = max(peaks_tmp);

peaks(i+index-1) = dat_iq(i+index-1);

peaks_amp(i+index-1) = dat_amp(i+index-1);

peaks_th_amp(i+index-1) = over_th(i+index-1);

i = i + win_len;

else

i = i+1;

end

end

alfa = peaks_th_amp.*exp(1j*angle(peaks));

Hd = impuls_filter;

puls_para = (Hd.Numerator')./max(Hd.Numerator);

CPG_container = zeros(dat_len,CPG_NUM);

CPG_container = [alfa,alfa,alfa,alfa,alfa,alfa];

cpg_t = alfa;

for cpg_i=1:CPG_NUM

dat_i = 1;

while dat_i <= dat_len

if(CPG_container(dat_i,cpg_i) ~= 0)

CPG_container((dat_i-round(FILTER_LEN/2)+1):(dat_i+round(FILTER_LEN/2)-1),cpg_i) = alfa(dat_i).*puls_para;

for cpg_clr_i=1:CPG_NUM %已经分配好的cpg的位置清零

if(cpg_clr_i ~= cpg_i)

CPG_container(dat_i,cpg_clr_i) = 0;

end

end

dat_i = dat_i +FILTER_LEN; %两个峰值小于滤波器长度的,分配到下个cpg

else

dat_i = dat_i + 1;

end

end

end

CPG_container = CPG_container';

CPG_out = sum(CPG_container)';

cfr_out = dat_iq - CPG_out;

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值