✅作者简介:热爱科研的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]);

⛄ 运行结果

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

⛄ 参考文献

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

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

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

⛳️ 完整代码

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