您现在的位置:首页 >> 通信 >> 内容

m基于MIMO通信系统的半盲信道估计算法matlab仿真,包括QPSK,ML检测,Turbo编译码等

时间:2023/3/5 22:21:38 点击:

  核心提示:01_105_m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJaUk51t

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

      通过设计训练序列或在数据中周期性地插入导频符号来进行估计的方法比较常用。而盲估计和半盲信道估计算法无需或者需要较短的训练序列,频谱效率高,因此获得了广泛的研究。但是一般盲估计和半盲估计方法的计算复杂度较高,且可能出现相位模糊(基于子空间的方法)、误差传播(如判决反馈类方法)、收敛慢或陷入局部极小等问题,需要较长的观察数据,这在一定程度上限制了它们的实用性。

4.部分源码

..........................................................

M            = 10;

%Loop until the job is killed or until the SNR or BER target is reached.

MTKL         = 200;

Berrs1       = zeros(M,MTKL);

Berrs2       = zeros(M,MTKL);

for mk = 1:MTKL

    mk

    MSE  = [];

    MCE  = [];

    for NT = NTS

        SNR         = SNRset;

        %Convert from SNR (in dB) to noise power spectral density.

        N0          = 1/(10^(SNR/10));

        error_count = 0;

        bit_count   = 0;

        %semi-blind channel estimation

        H_length    = 1;                     

        fm          = 50;                          

        fs          = 1e4;                        

        B           = fir1(1023,fm/(fs/2));   

        n_I         = randn(nTx*nRx,H_length);

        n_Q         = randn(nTx*nRx,H_length);

        a_I         = filter2(B,n_I);

        a_Q         = filter2(B,n_Q);

        Rayleigh_fading = 1/sqrt(2)*[a_I+j*a_Q]; 

        H               = reshape(Rayleigh_fading,[nRx,nTx,H_length]);

        iteration_index = 0;

        ii              = 1;

        %generating the training bits

.....................................................................

        n                = 1/sqrt(2)*[randn(nRx,NT(ii)) + j*randn(nRx,NT(ii))];                  

        %received training signal Y

        Y                = H*training_block+10^(-SNR/20)*n;

        %Least square channel estimation

        H_hat            = Y*training_block'*inv(training_block*training_block');

        number_iteration = M;

        H_updated_hat    = H_hat;   

        A     = [];

        J     = [];

        S_Hat = [];

..................................................................

            tmps                 = abs(H_updated_hat-H);

            MSE(iteration_index) = mse(tmps(:));

            MCE(iteration_index) =(1/(nTx*nRx))*sum(sum((abs(H_updated_hat-H).^2)));

        end

    end

    Berrs1(:,mk) = MSE;

    Berrs2(:,mk) = MCE;

end

for i = 1:M

    tmp1      = Berrs1(i,:);

    tmp2      = Berrs2(i,:);

    INDX1 = [];

    INDX2 = [];

    for j = 1:length(tmp1)

        if isnan(tmp1(j)) == 1

           INDX1 = [INDX1,j];

        end

        if tmp1(j) > 1000

           INDX1 = [INDX1,j];

        end

    end

    for j = 1:length(tmp2)

        if isnan(tmp2(j)) == 1

           INDX2 = [INDX2,j];

        end

        if tmp2(j) > 1000

           INDX2 = [INDX2,j];

        end

    end    

    tmp1(INDX1) = [];

    tmp2(INDX2) = [];

    Bersf1(i) = sqrt(mean(tmp1));

    Bersf2(i) = mean(tmp2);

end

figure;        

semilogy(1:M,Bersf1,'b-o');

xlabel('number of iterations');

ylabel('MSE');

grid on

 

figure;        

semilogy(1:M,Bersf2,'b-o');

xlabel('number of iterations');

ylabel('MCE');

grid on

if NTS == 4

   save r4.mat  M Bersf1 Bersf2

end

if NTS == 10

   save r10.mat  M Bersf1 Bersf2 

end

if NTS == 20

   save r20.mat  M Bersf1 Bersf2 

end

01_105_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168