基于子空间的OFDM系统盲信道估计附matlab代码

本文涉及的产品
图片翻译,图片翻译 100张
语种识别,语种识别 100万字符
文档翻译,文档翻译 1千页
简介: 基于子空间的OFDM系统盲信道估计附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

OFDM是一种无线环境下的高速传输技术,该技术的基本原理是将高速的串行数据分解成多路低速率的并行数据,并针对不同的载波分别进行调制.因此通过各个子载波的联合编码,OFDM系统可以具有良好的抗多径衰落和时延弥散的能力,并且保持较高的传输速率.

⛄ 完整代码

%OFDM系统基于子空间的盲信道估计

 

clear all

close all

clc

Mt=2;Mr=4;%the number of transmit and received antennas  

N=64;   %the number of subcarrier, M

% nos=2000;%number of symbol

P1=[3 4];   %length of CP

% Q=N+P;  %the totle length of an OFDM symbol, K

J=2;    %collect J consecutively received OFDM symbols

L=3;    %the order of channel

SNR=25;

Nm=1;

NRMSE=zeros(2,10);

a=[];

j=sqrt(-1);

 

mh1 = [ -1.4128-0.0914i 1.3527 - 0.0492i -0.01 - 0.2925i 0.0356 + 0.318i;

   1.3521 - 0.5077i -1.2663 + 0.593i 0.1068 + 0.3369i -0.1314 - 0.3654i ;

   -1.1205 + 0.2211i 1.1264 - 0.3101i 0.4627 - 0.0793i -0.485 + 0.1372i;

   0.417+j*0.030  1  0.873+j*0.145 0.285+j*0.309 ];

mh2 = [ -0.3258 + 0.1603i 0.3012 - 0.2012i 0.0052 + 0.0095i -0.0094 + 0.0158i ;

   0.3909 + 0.0212i -0.3892 + 0.0123i -0.068 + 0.266i -0.0342 - 0.2695i ;

   -0.1579 + 0.0661i 0.1398 - 0.079i -0.0337 + 0.1259i -0.0227 - 0.0938i;

    -0.221-j*0.322 -0.199+j*0.918 1 -0.284-j*0.524 ];  

% mh1=[-0.049+j*0.359  0.482-j*0.569  -0.556+j*0.587 1 ;               %h11

%     0.443-j*0.0364  1              0.921-j*0.194  0.189-j*0.208  ];  %h12

% mh2=[ -0.221-j*0.322  -0.199+j*0.918 1              -0.284-j*0.524 ;    %h13

%     0.417+j*0.030   1              0.873+j*0.145  0.285+j*0.309  ]; %h14

h0=[mh1(:,1) mh2(:,1)];

h1=[mh1(:,2) mh2(:,2)];

h2=[mh1(:,3) mh2(:,3)];

h3=[mh1(:,4) mh2(:,4)];%%%公式(17),每个子信道

H1=[h0,h1,h2,h3];

h11=[mh1(:,1).',mh1(:,2).',mh1(:,3).',mh1(:,4).'].';

h22=[mh2(:,1).',mh2(:,2).',mh2(:,3).',mh2(:,4).'].';%%公式(29)

h=[h11,h22];%%公式(30),实际信道

% h=norm(h);

%构造W矩阵

for i6=1:1:2

   P=P1(i6)

   Q=N+P;  %the totle length of an OFDM symbol, K

 

   

%-----------------------go through the channel-----------------%

H=zeros((J*Q-L)*Mr,J*Q*Mt);  

for i=1:J*Q-L

   H((i-1)*Mr+1:i*Mr,(i-1)*Mt+1:(L+i)*Mt)=H1;%%公式(25),构造H矩阵

end  

W1=zeros(N,N);

for i1=1:N

   for j1=1:N

      W1(i1,j1)=exp(j*2*pi*(i1-1)*(j1-1)/N)/sqrt(N);  

   end

end

W=[W1(N-P+1:N,:);W1];

IJ=eye(J);

IMt=eye(Mt);

W2=kron(IJ,W);

W3=kron(W2,IMt); %%公式(12)

W4=conj(W)*(W.');

A=kron(IJ,W4); %%公式(35)中的带括号部分


%------------------------进行子空间估计--------------------------------%



for nos=500:500:5000;  

   for i1=1:Nm

       %------------------产生OFDM符号-----------------------%

      b0=round(rand(1,2*Mt*N*nos));

       %QPSK modulation

       b1=reshape(b0,2,Mt*N*nos).';

       b2=bi2de(b1,2,'left-msb'); %%二进制向十进制转换

       b3=[1+j 1-j -1+j -1-j];

       b=b3(b2+1)/sqrt(2);

       %串并变换

       d1=b(:);

       

       for i=1:nos-J+1

           d4(:,i)=d1((i-1)*N*Mt+1:(i+J-1)*N*Mt);%连取J个符号

       end

       s=W3*d4;

       %信号经过信道

       r1=H*s;

       r=awgn(r1,SNR);

       %对r求自相关矩阵

       Rr=r*r'/(nos-J+1);  

       %特征值分解

       [U,S,V]=svd(Rr);

       %[U,V]=eigs(Rr,(J*Q-L)*Mr-J*N*Mt,'sm');

       %构造C矩阵

       C=zeros((L+1)*Mr,(L+1)*Mr);

       %for k=1:(J*Q-L)*Mr-J*N*Mt

       for k=J*N*Mt+1:(J*Q-L)*Mr

           uk=U(:,k);

           vk1=reshape(uk,Mr,J*Q-L);

           vk=zeros((L+1)*Mr,J*Q);

           vk(1:Mr,:)=[vk1 zeros(Mr,L)];

           for i3=1:L

               vktmp=vk((i3-1)*Mr+1:i3*Mr,:);

               vk(i3*Mr+1:(i3+1)*Mr,:)=[vktmp(:,J*Q) vktmp(:,1:J*Q-1)];

           end

           C=C+vk*A*vk';

       end

% %             vk2=zeros(Mr,2*(J*Q-L));

% %             for i=1:J*Q-L

% %                 vk2(:,(i-1)*2+1)=vk1(:,i);

% %                 vk2(:,i*2)=zeros(Mr,0);

% %             end

% %             vk2=vk2(:,1:2*(J*Q-L)-1);

% %               vk=zeros((L+1)*Mr,J*Q*Mt);  

% %                 for i3=1:L+1

% %                      vk((i3-1)*Mr+1:i3*Mr,i3:i3+2*(J*Q-L)-1)=vk;

% %                 end

% %                 C=C+vk*vk';  

       [UC SC VC]=svd(C);

       %[UC VC]=eigs(C,Mt,'sm');

       hr0=UC(:,(L+1)*Mr-Mt+1:(L+1)*Mr);     %最小的Mt个发射天线对应的特征向量

%         a=lscov(hr0,h);

%         Hr=hr0*a;

       

%         Herr1=h-Hr

%          Herr=Herr+(norm(Herr1)^2/(norm(h)^2));

%         for i4=1:Mt

%             NRMSE(i6,nos/500)=NRMSE(i6,nos/500)+(norm(Herr1(:,i4)))^2/(norm(h(:,i4)))^2;

%         end      

hb_h=zeros(1*Mt);

for i4=1:Mt

   hb_h(i4)=mean(hr0(:,i4)./h(:,i4));  

   hb1(:,i4)=hr0(:,i4)/hb_h(i4);

   NRMSE(i6,nos/500)=sqrt((h(:,i4)-hb1(:,i4))'*(h(:,i4)-hb1(:,i4)))/sqrt(h(:,i4)'*h(:,i4));

end

%        

%             Herr=Herr+sqrt((h-hr0)'*(h-hr0))/sqrt(h'*h);

%        

   end

 NRMSE(i6,nos/500)=sqrt( NRMSE(i6,nos/500)/(Nm*Mt*Mr*(L+1)));

 

end

end

figure(1)

semilogy(500:500:5000,NRMSE(1,:),'-or',500:500:5000,NRMSE(2,:),'-^r');xlabel('nos');ylabel('NMSE');title('The NMSE of the Channel Estimation');grid  

% axis([100 2000 10^-3 10^-1]);

⛄ 运行结果

⛄ 参考文献

[1] 刘玉珍, 闫兴玉. 基于VC的MIMO-OFDM系统的子空间半盲信道估计[J]. 计算机工程与应用, 2014(18).

[2] 兰海燕, 赵旦峰. 基于子空间的OFDM系统半盲信道估计研究[J]. 应用科技, 2007, 34(1):4.

[3] 刘强, 陈西宏, 胡茂凯. OFDM中基于子空间分解的半盲信道估计[J]. 现代电子技术, 2010(3):3.


⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料



相关文章
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
191 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
Windows
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
本文通过MATLAB仿真实现了OFDM系统中BPSK、QPSK、4QAM、16QAM和32QAM调制解调过程,并在加性高斯白噪声信道及TDL瑞利衰落信道下计算了不同信噪比条件下的误比特率。
152 4
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
122 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
86 2
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
88 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
3月前
|
算法
基于IEEE802.11g标准的OFDM信号帧检测matlab仿真
此项目旨在应对无线信号识别挑战,利用MATLAB/Simulink开发IEEE 802.11g OFDM信号识别算法。通过对标准的深入研究,设计并计算PLCP前导码数据,采用信号相关性进行信号鉴定。项目构建了完整的发射机模型,在AWGN信道下评估性能。通过生成特定的短训和长训序列,实现帧头检测,并模拟真实信号传输。测试使用MATLAB 2022a版本,展示了信号生成与识别的关键步骤及结果。
|
6月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
6月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
6月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
下一篇
无影云桌面