【随机共振】基于随机共振的高灵敏度GPS信号捕获算法
算法结构图
首先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信号捕获算法相关推荐
- m基于VDLL的矢量型GPS信号跟踪算法matlab仿真
目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 载波跟踪环是传统独立式GPS接收机最脆弱的环节,针对弱信号环境下其比伪码跟踪环路更容易失锁的 ...
- 【MATLAB教程案例2】GPS信号捕获算法的案例分析
FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...
- 【GPS仿真】基于matlab GPS信号捕获跟踪定位仿真【含Matlab源码 1960期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[GPS仿真]基于matlab GPS信号捕获跟踪定位仿真[含Matlab源码 1960期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...
- 【GPS仿真】基于matlab GPS信号捕获跟踪【含Matlab源码 2126期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[GPS仿真]基于matlab GPS信号捕获跟踪[含Matlab源码 2126期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...
- 基于matlab的GPS信号捕获仿真
目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 全球定位系统gps是一种可以在全球范围内为用户全天候提供实时.连续.高精度的位置.速度和时间信息的卫星导航系统,其主要终端设备 ...
- GPS信号捕获的MATLAB_FPGA仿真
由于C/A码长lms,所以至少要用lms的电文来捕获,但在实际中,1ms的电文仍有可能发生导航点相位偏移.因此,使用两组连续的10ms电文来捕获,就保证了在某一组电文中未含有相位偏移. 我们将一个信号 ...
- GPS软件接收机(1)——GPS信号捕获
解读Darius Plausinaitis, Dennis M. Akos所著的关于GPS信号捕获的代码 最新上传所有源码 链接:https://pan.baidu.com/s/1M2oiCWcm9e ...
- 基于matlab的GPS信号相关检测算法仿真
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 全球定位系统(Global Positioning System,GPS),是一种以人造地球卫星为基 ...
- GPS信号捕获基本原理
GPS卫星发送的信号一般由3个分量组成:载波.伪码和导航电文,其中伪码和导航电文采用BPSK技术去调制载波. GPS使用的两个L波段两种载频: 1 GPS搜索捕获原理 为了跟踪和解码GPS信号,首先要 ...
最新文章
- excel文件无法打印提示内存不足_三星打印机无法扫描文件?来看看她的详细解决办法...
- ubuntu 视频播放不了
- gpt最大分区容量_[电脑知识]GUID(GPT)磁盘全局唯一分区表详解
- mysql数据库添加索引和去重
- html表格以pdf格式导出到本地
- pat1111-1120
- Git Windows安装手册
- 机器学习笔记(五)——朴素贝叶斯分类
- C++ const用法
- 50. Pow(x, n) (MATH)
- xshell5下载和安装教程
- UI - PS如何导入不同的字体
- 数据挖掘实战系列 之 Kaggle 练习项目快速入门
- ArcGIS插件安装通用问题汇总
- 一个故事告诉你,压力真的可以击垮一个人
- 第三章 电商分析之会员活跃度
- Android eclipse常见错误开发总结
- 2017年总结2018年展望
- 如何免费将PDF转成JPG?
- 单片机学习 9-直流电机实验