利用zc序列进行简单的帧同步


参考文章 https://wenku.baidu.com/view/accce6d1240c844769eaeea9.html

zc序列的产生

产生zc序列,根据论文公式得出,K值可以用来评价ZC序列的好坏。1位最好,其次为signal_length-1.

function [cazac_sequence] = CreatCazac(signal_length, K)

if nargin == 1
    K = signal_length-1;
end
n = 1:signal_length;
p = 0;
if mod(signal_length, 2)==0
    cazac_sequence=exp(1j*2*pi*K/signal_length*(n.*n/2+p*n));
else
    cazac_sequence=exp(1j*2*pi*K/signal_length*(n.*(n+1)/2+p*n));
end
end

同步算法

这里的同步主要指帧同步,就是利用已知的zc序列和接收信号进行同步。来查找同步头。

zc = CreatCazac(27, 1);

pre = randn(1, 13);
rx = [pre zc ones(1, 10)]; % 创造接收数据,分别在头尾加了一些数字

res = xcorr(rx, zc);
res(1:length(rx)-1)=[]; % matlabxcorr互相关函数会产生一些冗余。这个多余的长度恰好是max(rx, zc) - 1。在这之后的值才是真正的互相关,理解这里很重要
[~,index] = max(abs(res)) %则index的位置就是同步头开始的位置。
plot(abs(res));

上面只是简单的举了个例子。还有以下的一些问题。

  1. 门限的设置。即可能会存在随机的噪声和zc序列产生峰值,但是发射端又没有存在数据。这里的考虑就比较复杂了。
  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值