首页 > 其他分享 >m基带信号的软同步接收系统matlab性能仿真,对比统计同步,BTDT,CZT,ZOOM-FFT以及频谱细化法

m基带信号的软同步接收系统matlab性能仿真,对比统计同步,BTDT,CZT,ZOOM-FFT以及频谱细化法

时间:2023-10-08 22:32:38浏览次数:24  
标签:Fcourse 同步 BTDT FFT length 信号 msg Fth

1.算法仿真效果 matlab2022a仿真结果如下:

1.jpeg

统计同步

2.jpeg

BTDT

3.jpeg

CZT

4.jpeg

ZOOM-FFT

5.jpeg

频谱细化法

6.jpeg

2.算法涉及理论知识概要 基带信号的软同步接收系统是通信系统中非常重要的一部分。在多种通信系统中,如无线通信、光纤通信等,接收到的信号一般都是基带信号。为了有效地处理这些信号,需要对其进行同步接收。这里的“同步”指的是将接收到的信号与发送端的信号在时间上对齐。在多种基带信号同步接收技术中,以下五种方法较为常见:统计同步、BTDT、CZT、ZOOM-FFT以及频谱细化法。下面我们来详细介绍这些方法的原理和数学公式。

    统计同步:这种方法是基于信号统计特性的同步算法。其基本原理是:在接收到的信号序列中,通过寻找最有可能的抽样点位置来实现信号同步。具体来说,假设接收到的信号为y(t),先对其进行滑动窗口处理(窗口长度为N),得到一系列的子序列y(n), n=tN。接着对每个子序列进行能量计算,得到En=Σ|y(n)|²。选择具有最大能量的子序列作为同步点,即选取t0使得Emax=maxEn。用t0乘以N,即可得到信号同步点的时间。

    BTDT:BTDT(基于时域的自适应阈值)是一种在时域上对信号进行同步跟踪的方法。其基本原理是:通过对接收到的信号进行自适应阈值处理,得到一个时域的门限,然后利用这个门限对信号进行二值化,进而找到信号的同步点。具体来说,假设接收到的信号为y(t),首先计算其能量E=Σ|y(t)|²,然后根据阈值公式T=αE计算阈值(其中α为常数)。接着对信号进行二值化处理,即当|y(t)|²>T时,令y(t)=1;当|y(t)|²<T时,令y(t)=0。最后通过滑动窗口(窗口长度为N)找到连续为1的子序列,该子序列的起点即为信号的同步点。

    CZT:CZT(基于变换域的自适应阈值)是一种在变换域上对信号进行同步跟踪的方法。其基本原理是:通过对接收到的信号进行快速傅里叶变换(FFT),将其从时域转换到频域,然后在频域上对信号进行阈值处理,进而找到信号的同步点。具体来说,假设接收到的信号为y(t),首先对其进行FFT处理,得到频域表示Y(f)。接着根据阈值公式T=αE(f)计算每个频率分量的阈值(其中α为常数,E(f)为每个频率分量的能量)。对每个频率分量进行二值化处理,即当|Y(f)|²>T时,令Y(f)=1;当|Y(f)|²<T时,令Y(f)=0。最后将所有频率分量的二值化结果进行逆FFT处理,得到时域上的二值化信号。通过滑动窗口找到连续为1的子序列,该子序列的起点即为信号的同步点。

    ZOOM-FFT:ZOOM-FFT(变步长快速傅里叶变换)是一种加速FFT运算的方法。其基本原理是:通过对FFT运算进行变步长优化,使得在频率较高或较低的部分使用较小的窗口大小(即步长),而在频率适中的部分使用较大的窗口大小,以此来提高FFT运算的速度和精度。具体来说,假设接收到的信号为y(t),首先对其进行分段处理,将整个信号分成若干段(每段长度为N),然后在每段上分别进行FFT运算。对于频率较低的部分(即前几段),使用较小的窗口大小(即步长),对于频率较高的部分(即后几段),使用较大的窗口大小。通过这种方式,可以在保证精度的同时提高运算速度。

   频谱细化法:频谱细化法是一种通过对接收到的信号进行多次频谱分析,找到最接近真实频率的谱峰位置来实现信号同步的方法。其基本原理是:假设接收到的信号为y(t),先对其进行傅里叶变换得到频谱Y(f),然后在一定频率范围内对频谱进行多次细化分析(如采用FFT或其他快速算法),找到最接近真实频率的谱峰位置。该谱峰位置对应的频率即为信号的同步点。

3.MATLAB核心程序

b             = hanning(127);
msg           = filter(b,1,msg2);
msg           = msg/max(msg);
msg(1:1024)   = [];
%调制
ff            = cos(2*pi*freqcarrier.*[0:length(msg)-1]/freqSample); 
signalSample  = msg.*ff;
t             = length(signalSample);
[f,sf]        = T2Fv2(t,signalSample);
 
 
figure;
subplot(311);
plot(msg);
title('测试随机数');
axis([1,length(msg),-1.5,1.5]);
subplot(312);
plot(f,abs(sf));
xlabel('频率 Mhz');
subplot(313);
plot(sf);
xlabel('归一化频率 点数');
 
 
%==========================计算Fcourse========================
sf1(1)  = 0;
index   = find(sf== max(sf));
I       = 3;
Fcourse = index;
tic;
%==========================利用BTDT计算Fpresize================
Fth = Fcourse; 
N   = length(msg);
for k = 1:I
    Ntemp = N*(Fcourse-0.5)/Fth;
    numTemp = round(Ntemp);
    [ftemp,sftemp]=T2Fv2(t,signalSample(1:numTemp));
    sftemp(1) = 0;
    indexTemp = find(sftemp== max(sftemp));
    if sftemp(indexTemp)>sftemp(indexTemp-1)
       Fth = Fth+(0.5)^(k+1);
    else
       Fth = Fth-(0.5)^(k+1);
    end     
end
format long;
Fpresize = Fth;
fprintf('%6.5f\n',Fpresize);
clc;
t=toc;
 
figure;
%恢复眼图
delta  = (Fcourse)/length(msg); 
Xpoint = mod((1:length(msg))*delta,64);
Ypoint = msg;
subplot(211)
tip = ceil((1:length(msg))*delta);
for k = 1:max(tip)
    indexSS = find(tip==k); 
    plot(Xpoint(indexSS),Ypoint(indexSS));
    hold on;
end
axis([2.3,18.4,-0.96,0.96]);
title('标准眼图');
grid on;
 
 
%恢复眼图
delta  = Fpresize/length(msg); 
Xpoint = mod((1:length(msg))*delta,64);
Ypoint = msg;
subplot(212)
tip = ceil((1:length(msg))*delta);
for k = 1:max(tip)
    indexSS = find(tip==k); 
    plot(Xpoint(indexSS),Ypoint(indexSS));
    hold on;
end
axis([2.3,18.4,-0.96,0.96]);
title('同步之后眼图');
grid on;
 
 
 
p=100*abs(Fpresize-Fcourse)/Fcourse;
fprintf('估计精度:');
fprintf('%2.4f',p);
fprintf('%%\n');
 
fprintf('仿真时间:');
fprintf('%2.4f',t);
fprintf('s\n');
save r2.mat t p

标签:Fcourse,同步,BTDT,FFT,length,信号,msg,Fth
From: https://blog.51cto.com/matworld/7762973

相关文章

  • 多线程,线程同步(synchronized),并发问题
    多个线程同时操作一个对象,就会出现并发问题,所以需要线程同步,线程同步是一种等待机制。 线程同步的形成条件:队列+锁(锁就是例如上厕所,一个进去锁住避免其他进入。到下一个进去再锁住)线程同步来解决线程的不安全性弊端!: ......
  • 使用rsync+inotify实现/www目录实时同步
     #rsync常用于做为linux系统下的数据镜像备份工具,实现远程同步,支持本地复制,或者与其他SSH、rsync主机同步数据,支持增量备份,配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时数据同步官方网站:http://rsync.samba.org/软件包:rsync,rsy......
  • 服务器数据恢复-V7000存储更换故障磁盘后同步失败导致逻辑盘无法挂载的数据恢复案例
    服务器数据恢复环境:P740+AIX+Sybase+V7000存储,存储阵列柜上共12块SAS机械硬盘(其中一块为热备盘)。服务器故障:存储阵列柜中有磁盘出现故障,工作人员发现后更换磁盘,新更换的磁盘数据同步到40%左右时,阵列柜中的另一块磁盘也出现问题,数据同步中断,逻辑盘无法挂接到小型机上,业务中断。存......
  • rsync 远程同步
    一、rsync远程同步简介rsync(RemoteSync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。在远程同步任务中,负责发起rsync同步操作的客户机......
  • [知识管理] Obsidian + Remotely Save插件 + 第三方存储/OSS(七牛云)的同步方案
    0序言在几经选择、对比之后,我选择:Obsidian+RemotelySave插件+第三方存储/OSS(七牛云)的方案来搭建自己的【知识管理系统】。对比分析知识管理工具的过程,详情参见:[知识管理]个人知识管理之知识管理工具的全面分析-博客园/千千寰宇【推荐】知识管理与数据管理系......
  • 武汉大学2023年新生程序设计竞赛(同步赛)
    C.覆叶之交(线段树+离散化+扫描线)输入格式:输出格式:输入00230032-1-111输出11说明线段树+离散化+扫描线#include<bits/stdc++.h>#defineIOSios::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr)#definelowbit(ver)ver&(-ver)......
  • 2023-10-06 useState数据渲染不同步==》async await
    业务:点击按钮增加数据并渲染出来。框架:antd+ts+react。原来写法:const[tagData,setTagData]=useState<Array<number>>([]);点击事件://添加标签constaddTag=()=>{letarr:(number)[]=[];arr=tagData;arr.push(Math.floor(Math.random()......
  • RPA自动化全平台文章同步助手
    在当今文案自媒体时代,我们通常在各大平台都拥有账号,需要同步发布文章。然而,这个过程常常让人感到非常繁琐,因为我们需要将文章复制粘贴到不同平台上。但是,现在我们可以借助RPA(RoboticProcessAutomation,机器人流程自动化)技术来解决这个问题。RPA技术利用软件机器人来模拟和自动化......
  • Rsync 远程同步
    目录1.配置rsync源服务器1.1191.168.175.1081.2191.168.175.1092.发起端配置rsync+inotify192.168.175.108配置rsync源服务器192.168.175.109配置rsync源服务器192.168.175.110发起端配置rsync+inotify1.配置rsync源服务器1.1191.168.175.108vim/etc/......
  • rsync远程同步
    rsync远程同步nfs不太安全、scp是全量复制rsync是快速增量备份工具remotesync,远程同步官网:http://rsync,samba.org下行同步:(推)服务端发出命令,源地址是服务端,目的地址是客户端(从源服务器拉数据)上行同步:(拉)客户端发出命令,源地址是客户端,目的地址是服务端(推数据到源服务器)定时......