目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

正交频分复用技术(orthogonalfrequencydivisionmultiplexing,ofdm)应用在通信系统中可以有效抵抗码间干扰(inter-symbolinterference,isi)。同时,通过在符号间插入循环前缀(cyclicprefix,cp),可以进一步消除载波间干扰(intercarrierinterference,ici)。因此将ofdm技术应用在vlc系统中可以有效抵抗isi和ici,同时提高系统的频谱利用率。在vlc系统中使用的是强度调制直接检测,信号以光强作为载体进行传播,本系统采用的调制方式为dco-ofdm(directcurrentoptical-ofdm)。

传统的线性信道估计方法,如ls、lmmse算法等均假设无线信道是密集多径的,因此需要使用大量的导频信号来获取准确的信道状态信息,从而导致系统的频谱资源利用率较低。而大量的研究结果表明,在宽带无线通信中,无线信道一般具有时域稀疏性,可以由少数主要的路径近似。

近年来压缩感知理论受到了广泛的关注与研究。candès、donoho等人提出的压缩感知理论指出:当某个信号是稀疏的,或者其在某个变换域内是稀疏的,则可以以远低于奈奎斯特采样定律所要求的采样点数以很大的概率准确地将该信号恢复出来。压缩感知技术显著降低了对稀疏信号进行采样时所需要的采样点数,因此大幅度提高了数据的利用率。vlc的信道同无线通信信道一样具有时域稀疏的特性,可以将压缩感知技术应用到vlc系统的信道估计中,降低信道估计中的导频开销。

首先将MMSE计算公式中的XHX用其均值来代替,即

为什么用均值来代替即时值能降低计算复杂度?这需要分析XHX里面的数据是什么,它是一个MM的矩阵,其对角线上是已知数据(导频信号)的功率,而其他位置的数据则是已知数据与其自身延迟数据的相关,该相关值可近似为满足标准正态分布的信号(均值为0)。那么对应到E(XHX),其对角线上的数据就是已知数据的平均功率,而其他位置的数据则为0。因此通过这种替代,可将hmmse进一步做如下化简

这样就去掉了一个矩阵求逆的运算,再进一步设SNR=E(x2)/σ \sigmaσ2,   β \betaβ=E(x2)E(1/x2),则

其中SNR为接收信号的信噪比,而β则是与调制方式有关的一个常数。

LMMSE估计比MMSE估计省掉了一个矩阵求逆过程,看到这里你也基本了解了LMMSE估计的来历,再去看更深入的改进算法就会容易很多。这里的lmmse估计公式里还包含一个矩阵求逆。以7条多径的信道估计为例,这就是要做一个7*7大小矩阵的求逆,计算量还是很大的,因此实际工程中,还是有很多其他的方法来进一步降低LMMSE的计算量 ,这里简单介绍一种SVD分解的方法,也可理解为特征值分解,因为信道相关矩阵是方阵。

2.仿真效果预览

matlab2017b仿真如下:

3.MATLAB核心程序

%仿真采用FFT/IFFT傅立叶变换进行距离和速度估计
clc;
clear;
close all;
warning off;
addpath(genpath(pwd));snr_dB      = 100;
modsel      = 1;
Nc          = 64;
Nsym        = 64;
c0          = 3e8;
fc          = 5.9e9;
T           = 6.4e-6;
deltaf      = 1/T;
TG          = 1.6e-6;
T_OFDM      = T+TG;
Range       = [14.0625,  16.6406];
vrel        = [11.6381,  11.6381];
attenuation = [1,        1];
targetnum   = length(Range);%%
%你自己写的原程序
[matrixDIV]=SystemSimulateFunc(snr_dB,modsel,Range,vrel,attenuation);
save H1.mat matrixDIV
H1 = matrixDIV;%%
%我第一次给你设计的信道估计部分程序
[matrixDIV]=SystemSimulateFunc_my(snr_dB,modsel,Range,vrel,attenuation);
save H2.mat matrixDIV
H2 = matrixDIV;%这次给你设计的压缩感知部分程序
%压缩参数
Beta    = 0.3;
%参数lemda
lemda   = 0.5;Len     = 2048;Reconstr1  = zeros(size(matrixDIV));
Reconstr2  = zeros(size(matrixDIV));
[R,C]      = size(matrixDIV);
for i = 1:RSignalr         = real(matrixDIV(i,:));[tmpsr,CS_Rec]  = func_CS_bp(Signalr,Beta,lemda);Signali         = imag(matrixDIV(i,:));[tmpsi,CS_Rec]  = func_CS_bp(Signali,Beta,lemda);   Reconstr1(i,:) = tmpsr;Reconstr2(i,:) = tmpsi;
end%计算压缩感知带来的误差:
RS        = Reconstr1+sqrt(-1)*Reconstr2;
disp('压缩感知带来的误差:');
mean(mean(abs(matrixDIV-RS)))matrixDIV = Reconstr1+sqrt(-1)*Reconstr2;FFTNsymsearch=Nsym*4;
FFTNcsearch=Nc*4;fprintf('①最大不模糊距离Rmax=%fm\n',c0/(2*deltaf));
fprintf('②距离分辨率ΔR=%fm\n',c0/(2*deltaf*FFTNcsearch));
fprintf('③最大不模糊速度Vmax=±%fm/s\n',c0/(4*fc*T_OFDM));
fprintf('④速度分辨率ΔV=%fm/s\n',c0/(4*fc*T_OFDM*FFTNsymsearch));
%距离矩阵/vector
matrix_R=ifft(matrixDIV(:,1),FFTNcsearch);
matrix_v=ifft(matrixDIV(1,:),FFTNcsearch);%=========时域显示==========
figure(4)
len=length(matrixDIV(:,1))
t=0:len-1;
stem(t,matrixDIV(:,1));%=========频域显示===========
f= (0:FFTNcsearch-1).*1000./FFTNcsearch;  %fs=1000 为采样点数
figure(5)
subplot(121)
plot(f,matrix_R);
subplot(122)
plot(f,matrix_v);%=========相对速度矩阵/vector==========
matrix_vrel=fft(matrixDIV(1,:),FFTNsymsearch)/FFTNsymsearch;%=========搜索计算距离=================
[max_R,detected_Rsn]=max(abs(matrix_R));
%fprintf('detected_Rsn=%f\n',detected_Rsn);
detected_Rsn=detected_Rsn-1;
expected_Rsn=round(2*Range*deltaf*FFTNcsearch/c0);
%fprintf('expected_Rsn=%f\n',expected_Rsn);
expected_R=expected_Rsn*c0/(2*deltaf*FFTNcsearch)%这一句有疑问。
detected_R=expected_R;
%==============搜索计算速度,速度需要进行折半修正===========
[max_vrel,detected_vsn]=max(abs(matrix_vrel));
detected_vsn=detected_vsn-1;
if(detected_vsn>FFTNsymsearch/2-1)detected_vsn=detected_vsn-FFTNsymsearch;
end
expected_vsn=round(2*fc*T_OFDM*FFTNsymsearch*vrel/c0);
expected_vrel=expected_vsn*c0/(2*fc*T_OFDM*FFTNsymsearch)
detected_vrel=expected_vrel;%屏蔽
%===============距离序列==============
sequence_R=(0:FFTNcsearch-1)*c0/(2*deltaf*FFTNcsearch);
sequence_R_dB=20*log10(abs(matrix_R)/max_R);
%===============速度序列==============
sequence_vrel=(-FFTNsymsearch/2:FFTNsymsearch/2-1)*c0/(2*fc*T_OFDM*FFTNsymsearch);
sequence_vrel_dB=20*log10(abs(matrix_vrel([FFTNsymsearch/2+1:FFTNsymsearch,1:FFTNsymsearch/2])/max_vrel));
plotrlength=FFTNcsearch;
plotvrellength=FFTNsymsearch;
figure(1)
set(gcf,'color','white');
plot(sequence_R(1:plotrlength),sequence_R_dB(1:plotrlength),'b');
xlabel('range in m');
ylabel('normalized signal to noise in dB');
figure(2)
set(gcf,'color','white');
plot(sequence_vrel(1:plotvrellength),sequence_vrel_dB(1:plotvrellength),'b');
xlabel('velocity in m/s');
ylabel('normalized signal to noise in dB');
figure(3)
fftrpot=1:FFTNcsearch/4;
ffvrelpot=FFTNsymsearch/2+1:FFTNsymsearch/2+FFTNsymsearch/10;[x,y]=meshgrid(sequence_vrel(ffvrelpot),sequence_R(fftrpot));
z=zeros(length(fftrpot),length(ffvrelpot));
for u=0:length(fftrpot)-1for n=0:length(ffvrelpot)-1z(u+1,n+1)=(sequence_vrel_dB(ffvrelpot(n+1))+sequence_R_dB(fftrpot(u+1)))/2;end
end
h=pcolor(x,y,z);
set(h,'edgecolor','none','facecolor','interp');
set(gcf,'color','white');
%colormap('Gray');
colorbar;
xlabel('relative velocity in m/s');
ylabel('range in m');
%title('the simple FFT based');
grid on;
01_102m 

4.完整MATLAB

V

m基于OFDM的OMP压缩感知信道估计算法误码率仿真,对比传统的LS,MMSE以及LMMSE信道估计性能相关推荐

  1. 信道估计算法误码率仿真,对比不同导频长度,对比不同信道估计算法包括CS-OMP,LS,MMSE

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 所谓信道估计,就是从接收数据中将假定的某个信道模型的模型参数出来的过程.如果信道是线性的话,那么信道 ...

  2. m基于深度学习的OFDM信道估计和均衡算法误码率matlab仿真,对比了LS,MMSE以及LMMSE等传统的信道估计算法

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着无线通信的快速发展,5G正逐渐成长为支撑全社会各行业运作的大型基础性互联网络,其服务范围的大幅扩 ...

  3. 【OMP信道估计】基于OMP压缩感知的信道估计算法的MATLAB仿真

    1.软件版本 MATLAB2021a 2.本算法理论知识 3.核心代码 clc; clear; close all; warning off; addpath 'func\'CYC = 20; for ...

  4. m基于rbf神经网络和遗传算法优化的MIMO-OFDM系统信道估计算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 MIMO-OFDM的信道估计:时,频,空三个域都要考虑,尤其是在空域,不同天线发射的导频序列 ...

  5. 【OFDM频域同步】基于OFDM数字电视地面广播系统中频域同步技术matlab仿真

    1.软件版本 matlab2021a 2.本算法理论知识 数字电视地面广播传输一直是各界研究的热点,采用OFDM多载波调制可以有效对抗地面传输中多径效应.本课题主要要求学生掌握数字电视地面广播传输系统 ...

  6. 针对视频压缩的压缩感知超分算法:COMISR

    作者单位:谷歌 论文链接:https://arxiv.org/pdf/2105.01237.pdf 编者言: 针对H.264等视频压缩标准压缩后的视频进行超分,定量和定性效果相比过去的VSR算法有较大 ...

  7. 基于RBF和BP神经网络的信道估计算法的仿真与分析

    使用神经网络进行信道估计构架 整个仿真系统的结构如上所示. 这里,我们主要是通过对导频序列和已知的导频序列进行神经网络训练,得到一个神经网络,对输入的新号进行实时的预测和估计.最后得到所要的接受信号. ...

  8. m基于PSO粒子群优化的第四方物流的作业整合算法matlab仿真,对比有代理人和无代理人两种模式下最低运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用

    目录 1.算法概述 2.仿真效果预览 3.核心MATLAB程序 4.完整MATLAB程序 1.算法概述 粒子群优化 (PSO)算法是通过模拟鸟群觅食过程中的迁徙和群聚行为而提出的一种基于群体智能的全局 ...

  9. m基于matlab的光通信的信道估计,均衡,抑制papr误码率仿真,对比ZF,RLS,MMSE三种算法

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 可见光通信的信道估计,均衡,抑制papr. 不考虑光信道,用传统的无线通信的OFDM的信道估计,均衡 ...

最新文章

  1. 20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行
  2. 如何帮助谷歌鉴别内容重复的网页
  3. C语言经典算法 1-10
  4. 怎么用PHP语句做出增改删查功能,mysql语句实现简单的增、删、改、查操作示例...
  5. dapperpoco mysql_.NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...
  6. Linux source用法(转)
  7. Android杂谈--ListView之BaseAdapter的使用一(转)
  8. 使用Kalibr进行IMU+相机的标定
  9. 移动边缘计算——MEC
  10. 关于计算机中的编码问题: ASC2/ Unicode/ Utf-8
  11. linux宿主机文件拷贝,linux 虚拟机和宿主机相互拷贝文件
  12. OPTEE CA和TA通信 实现从java到ca
  13. 骨干是折腾出来的 读书笔记10
  14. 零基础入门Jetson Nano——软件篇
  15. 解决云服务器上go-cqhttp扫码登录QQ失败问题
  16. mysql统计用户留存_SQL 统计用户留存
  17. css网页网格线条背景
  18. 用java做日记本系统_jsp+servlet开发java web个人日记本系统
  19. 专题·关基保护 | 国家关键信息基础设施安全保护的法治进展
  20. 通过对json数据解析爬取虎牙直播数据并存入csv文件

热门文章

  1. 全球集装箱港口效率排行榜公布,美国两大港口垫底,中国三大港口进入前十 | 美通社头条...
  2. python恶搞代码打开对方摄像头_大神们救命啊!!如何实现把摄像头读入的视频在tk界面呈现出来?...
  3. 金蝶云星空对接打通伯俊ERP调拨单查询接口与修改记录接口
  4. Ruff Chain 重磅首发 利用区块链技术构建标准统一的物联网世界
  5. python拼写_Python拼写游戏
  6. 还有人没尝过 Pinia 吗,请收下这份食用指南!
  7. windows下的Anaconda(三)深入了解Anaconda
  8. 深度挖掘用户需求?按这五个步骤做!
  9. Memcache原理性的东西 干货
  10. NVME SAS SATA