算法结构图

首先input输入到SR

这个语句意思就是每次输入一段数据进行处理,因为这个系统是实时反馈的系统,所以在处理的时候,必须是一段段处理,而不能和原来一样一次性进行处理,所以我们每次处理的数据长度为FLEN。

这个是FFT的频率反馈。

第一次迭代,由于没有得到FFT,所以设置为0,然后后面的根据反馈结果对新输入的数据进行修正。

51~66行,是采用龙哥库塔算法计算SR系统,龙哥库塔算法在具体公式:即

然后开始稀疏处理,大概流程如下所示:

根据上述的过程,结合我们的程序,具体如下

首先初始化字典,不过这里,其中DCT矩阵使用cos表示。

第二、

这里,step为稀疏度,我设置的4,相当于用原来的step*step分之一来表示信号,这样就稀疏了。

具体你可以参考

中的

比较类似。

第三

我的代码就是

这个就是OMP过程。就不做介绍了。

第四

就是更新原子字典的过程。

对应程序是:

对应程序是:

然后,我这里更新的过程和他稍微不一样。

残差得到之后,下一次迭代的时候,使用Resd这个残差作为后一次迭代使用。

这里开始FFT变换

然后频谱特征的获得

最后是频率参数的获得

将估计得到的Fest反馈给前面的fd,进行多普勒频偏的修正

clc;
clear;
close all;
warning off;LEN = 10000;% load awgnsignal2.mat
% time2 = ans.Time;
% for i = 1:length(time2)
%     Xawgn(i,1)     = ans.Data(1,1,i);
% end
% save input.mat Xawgn time2%以下数据从你的simulink中保存,2为-5db,3为-15db,4为-20db,5为-25db,6为-39db
% load input2.mat
% load input3.mat
% load input4.mat
% load input5.mat
load input6.mat
figure;
plot(time2(1:LEN),Xawgn(1:LEN));
title('噪声信号');
xlim([0,time2(LEN)]);
xlabel('t/s');
ylabel('Amplitude');%信号的采样率
Fs    = 2.046e8;
%循环迭代过程中,每次输入的数据长度
FLEN  = 8192;
Xsave1= [];
Xsave2= [];for jj = 1:30jjInputs= Xawgn(FLEN*(jj-1)+1:FLEN*jj);%求解使用四阶Runge-Kutta方法%尺度变换SR%这里fd为反馈调整频率,用来修正多普勒频谱,初始输入阶段,fd设置为0.if jj == 1fd = 0; x1 = real(Inputs(1:length(Inputs))*exp(-sqrt(-1)*2*pi*fd/Fs));else%fd为后端FFT之后从其频率谱中提取的特征fd = Fest; x1 = real(Inputs(1:length(Inputs))*exp(-sqrt(-1)*2*pi*fd/Fs));   end%自适应调整参数a和ha0     = 1.8;a1     = 1.2;        b      = 0.05;%参数b固定,调整a和hh0     = 0.1;h1     = 0.08;x      = zeros(1,length(x1));for i=1:length(x1)-1%计算a changeda      = a0 + (a1-a0)/length(x1);h      = h0 + (h1-h0)/length(x1);k1     = h*(a*x(i)-b*x(i).^3+x1(i));k2     = h*(a*(x(i)+k1/2)-b*(x(i)+k1/2).^3+x1(i));k3     = h*(a*(x(i)+k2/2)-b*(x(i)+k2/2).^3+x1(i+1));k4     = h*(a*(x(i)+k3)-b*(x(i)+k3).^3+x1(i+1));x(i+1) = x(i)+(1/6)*(k1+2*k2+2*k3+k4);endxstage3       = x;xstage3(1:200)=[];xstage3 =xstage3-mean(xstage3);xstage3 =xstage3/max(abs(xstage3));%稀疏处理%rec_X2   = func_omp_denoise(xstage3);X0       = xstage3;X1       = [X0;X0;X0;X0;X0;X0;X0;X0];Vnoise   = 0.1;X1       = double(X1);X1_std   = std2(X1);[RR,CC]  = size(X1);N        = 32;C        = 1/(2*Vnoise^2*(1+Vnoise^2/X1_std^2));step     = 4;X2       = X1;X2       = imresize(X2,4);[RR,CC]  = size(X2);%字典K          = 32*32;                         dictmatrix = zeros(N,sqrt(K));                 for k=0:sqrt(K)-1V = cos((0:1:N-1)*k*pi/sqrt(K));if k>0 V=V-mean(V); enddictmatrix(:,k+1)=V/norm(V);end;dictmatrix2 = kron(dictmatrix,dictmatrix);                          dictmatrix2 = dictmatrix2 * diag(1./sqrt(sum(dictmatrix2.*dictmatrix2))); X3          = zeros(N*N, ceil(1/step*(RR-N+1))*ceil(1/step*(CC-N+1)));cnt = 0;for is = 1:step:RR-N+1for js = 1:step:CC-N+1cnt        = cnt + 1;tmps       = X2(is:is+N-1, js:js+N-1);X3(:, cnt) = tmps(:);endend%重构rec_dictmatrix = zeros(size(dictmatrix2, 2), cnt);for is = 1:cntrec_dictmatrix(:,is) = func_omp(dictmatrix2, X3(:,is), Vnoise);endrec_X = dictmatrix2 * rec_dictmatrix;%重组[rec_X2, W] = func_Recon(rec_X, step, RR, CC, N);rec_X2      = rec_X2./W;%最后的平滑处理,Y2        = rec_X2(1,:);Y3        = Y2;KK        = 512;for is = 1:length(Y2)if is <= KKY3(is) = mean(Y2(1:is)); elseY3(is) = mean(Y2(is-KK:is));  endendY3(1:KK/2)=[];FFTlen   = length(Y3);%处理数据长度, 也即FFT的长度,用来实时反馈频率估计值%FFTyfft     = fft(Y3);%FFT频谱特征获得yfft2    = fftshift(abs(yfft));%FFT频谱中提取频率参数调整,将频率估计值反馈到输入的数据中FF          = [0:FFTlen/2]/FFTlen*Fs;yfft3       = yfft2(FFTlen/2:end);[Vmax,Imax] = max(yfft3);Fest        = FF(Imax);%得到频率估计值,根据论文中介绍的自适应技术将频率估计结果反馈给%保存处理后的数据Xsave1= [Xsave1,Inputs'];Xsave2= [Xsave2,Y3];
endXsave1   = Xsave1/max(abs(Xsave1));
Xsave2   = Xsave2/max(abs(Xsave2));%对比处理前后的信号的频谱
yfft1    = fft(Xsave1);
yfft1    = fftshift(abs(yfft1));FFTlen=length(yfft1);
FF1      = [-FFTlen/2+1:FFTlen/2]/FFTlen*Fs;
yfft2    = fft(Xsave2);
yfft2    = fftshift(abs(yfft2));FFTlen=length(yfft2);
FF2      = [-FFTlen/2+1:FFTlen/2]/FFTlen*Fs;figure;
subplot(211);
plot(Xsave1);title('处理前的噪声信号');
xlim([0,1.5e5]);
subplot(212);
plot(FF1,yfft1);title('信号频谱');
ylim([0,2000]);figure;
subplot(211);
plot(Xsave2);title('处理后的信号');
xlim([0,1.5e5]);
subplot(212);
plot(FF2,yfft2);title('信号频谱');
% ylim([0,20000]);

仿真结果如下:

A28-75

【随机共振】基于随机共振的高灵敏度GPS信号捕获算法相关推荐

  1. m基于VDLL的矢量型GPS信号跟踪算法matlab仿真

    目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 载波跟踪环是传统独立式GPS接收机最脆弱的环节,针对弱信号环境下其比伪码跟踪环路更容易失锁的 ...

  2. 【MATLAB教程案例2】GPS信号捕获算法的案例分析

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  3. 【GPS仿真】基于matlab GPS信号捕获跟踪定位仿真【含Matlab源码 1960期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[GPS仿真]基于matlab GPS信号捕获跟踪定位仿真[含Matlab源码 1960期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

  4. 【GPS仿真】基于matlab GPS信号捕获跟踪【含Matlab源码 2126期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[GPS仿真]基于matlab GPS信号捕获跟踪[含Matlab源码 2126期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...

  5. 基于matlab的GPS信号捕获仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 全球定位系统gps是一种可以在全球范围内为用户全天候提供实时.连续.高精度的位置.速度和时间信息的卫星导航系统,其主要终端设备 ...

  6. GPS信号捕获的MATLAB_FPGA仿真

    由于C/A码长lms,所以至少要用lms的电文来捕获,但在实际中,1ms的电文仍有可能发生导航点相位偏移.因此,使用两组连续的10ms电文来捕获,就保证了在某一组电文中未含有相位偏移. 我们将一个信号 ...

  7. GPS软件接收机(1)——GPS信号捕获

    解读Darius Plausinaitis, Dennis M. Akos所著的关于GPS信号捕获的代码 最新上传所有源码 链接:https://pan.baidu.com/s/1M2oiCWcm9e ...

  8. 基于matlab的GPS信号相关检测算法仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 全球定位系统(Global Positioning System,GPS),是一种以人造地球卫星为基 ...

  9. GPS信号捕获基本原理

    GPS卫星发送的信号一般由3个分量组成:载波.伪码和导航电文,其中伪码和导航电文采用BPSK技术去调制载波. GPS使用的两个L波段两种载频: 1 GPS搜索捕获原理 为了跟踪和解码GPS信号,首先要 ...

最新文章

  1. excel文件无法打印提示内存不足_三星打印机无法扫描文件?来看看她的详细解决办法...
  2. ubuntu 视频播放不了
  3. gpt最大分区容量_[电脑知识]GUID(GPT)磁盘全局唯一分区表详解
  4. mysql数据库添加索引和去重
  5. html表格以pdf格式导出到本地
  6. pat1111-1120
  7. Git Windows安装手册
  8. 机器学习笔记(五)——朴素贝叶斯分类
  9. C++ const用法
  10. 50. Pow(x, n) (MATH)
  11. xshell5下载和安装教程
  12. UI - PS如何导入不同的字体
  13. 数据挖掘实战系列 之 Kaggle 练习项目快速入门
  14. ArcGIS插件安装通用问题汇总
  15. 一个故事告诉你,压力真的可以击垮一个人
  16. 第三章 电商分析之会员活跃度
  17. Android eclipse常见错误开发总结
  18. 2017年总结2018年展望
  19. 如何免费将PDF转成JPG?
  20. 单片机学习 9-直流电机实验

热门文章

  1. Lodop打印echarts图表
  2. 回车和换行的一些事情
  3. Qt/C++编写物联网管理平台35-实时曲线
  4. 拓嘉启远电商:拼多多手机以旧换新如何操作
  5. 打开github网站排版错误解决办法
  6. 关阿里腾讯京东美团提供的学生云主机相关内容的总结
  7. JS函数封装三个例子
  8. 57岁,我来杭州创业开店
  9. 暗黑2 自建服务器 游戏数量,暗黑2私服多国度共享存档服务器架设指南
  10. pytest测试框架详细讲解part01