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

m基于MIMO-OFDM-LDPC-STBC的通信链路matlab误码率仿真

时间:2023/3/13 22:37:10 点击:

  核心提示:14_028_m,包括程序操作录像...

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

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

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

点击店铺

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

2.部分仿真图预览





3.算法概述


4.部分源码

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

SNRs      = 10;%可修改参数

Modes     = 4; %只支持QPSK

isldpc    = 1; 

%OFDM长度

Nfft      = 512;      

%子载波数目 

NCarrier  = 64;        

%符号数/载波 

Nsymbols  = 8;      

%循环前缀长度 

Ncp       = 10;                

Nadder    = Nfft+Ncp; 

%位数/符号 

Nbits     = log2(Modes); 

%LDPC相关参数

Rl       = 0.5;%设置码率为 

Nl       = Nsymbols*NCarrier;

Ml       = Nl*Rl;

Hl       = mackay(Ml,Nl);

%发送天线矩阵

Tr_matrix =[1 2;-2+j 1+j];   

NTr_matrix= size(Tr_matrix,1);                                                                   

Nt        = size(Tr_matrix',2); %发射天线数目  

Nr        = 2;                  %接收天线数目 

%发射

[Nxx,data_eta,data_delta,data_eps,data_cojm] = func_trans_x(Nt,Tr_matrix,NTr_matrix); 

%子载波 

Carriers     = (1: NCarrier) + (floor(Nfft/4) - floor(NCarrier/2));

Len_carriers = Nfft-Carriers+2;                                          

Tx_training  = func_training_symbol(Nt,NCarrier); 

Nbase        = NCarrier * Nsymbols; 

LENS = 1000;

II   = im2bw(imresize(rgb2gray(imread('a.jpg')),[Nbase/2,Nbase/2]));

%绘图信息存储矩阵  

IMAGE                  = zeros(Nbase/2,Nbase/2);

IMAGE                  = II;

figure;

subplot(121);

imshow(IMAGE);

title('原始图像');

IMAGE2                = zeros(Nbase/2,Nbase/2);

Bers=zeros(length(SNRs),1);  

 

for j_snr = 1:length(SNRs)       

    CNT   = 0;

    error = 0;

    while CNT <= 127;

          SNRs(j_snr)

          error

        

            CNT = CNT + 1;

              

            Nerror       = zeros(1,Nr); 

            data_buffer1 = zeros(NCarrier,Nsymbols,Nr); 

            data_bits    = zeros(Nbase,Nbits,Nr);  

            N0           = 2*10^(-SNRs(j_snr)/10);

            %生成随机数用于仿真

            if  isldpc == 1; 

                %Tsignal0     = round(rand(Nbase/2,Nbits));  

                Tsignal0     = IMAGE(:,2*CNT-1:2*CNT);  

                

                Tsignal      = [Tsignal0;Tsignal0];

                %LDPC

                HS           = cell(1,Nbits);

                for ix = 1:Nbits

                    [ldpc_code,newH] = func_Enc(Tsignal0(:,ix),Hl);

                    Tsignal(:,ix)    = [ldpc_code;Tsignal0(:,ix)];

                    HS{ix}           = newH;

                end

            end

            if  isldpc == 0; 

                Tsignal0     = round(rand(Nbase,Nbits));  

                Tsignal      = [Tsignal0];

            end

            

            

            

            Tsignal2     = bi2de(Tsignal); 

            %PSK/QAM调制 

            if Modes == 2 | Modes == 4

               Tsignal_mod  = pskmod(Tsignal2,Modes,0); 

            end

            if Modes == 16 | Modes == 64

               Tsignal_mod  = qammod(Tsignal2,Modes,0); 

            end            

            

            

            Tcar_mat     = reshape(Tsignal_mod,NCarrier,Nsymbols);                     

            for st1=1:Nt:Nsymbols                              

                data = []; 

                for st2=1:Nt 

                    data=[data;Tcar_mat(:,st1+st2-1)]; 

                end 

                %STBC 

                data_stbc = func_stbc(data,Tr_matrix,NTr_matrix,NCarrier,Nt);

                %添加训练序列       

                data_stbc = [Tx_training;data_stbc];                                            

                data_rec    = zeros(1,Nadder*(NTr_matrix+1),Nr); 

                for st11=1:Nr 

                    for st2=1:Nt 

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

 

                    %解调

                    if Modes == 2 | Modes == 4

                       r_sym  = pskdemod(data_recf,Modes,0); 

                    end

                    if Modes == 16 | Modes == 64

                       r_sym  = qamdemod(data_recf,Modes,0); 

                    end     

                    

                    

                    data_buffer1(:,st1:st1+Nt-1,st11) = r_sym; 

                end

            end

            data_bufferf = zeros(Nbase,Nr); 

            

            

            

            for st11=1:Nr 

                tmps1                = data_buffer1(:,:,st11); 

                data_bufferf(:,st11) = tmps1(:); 

                data_bits(:,:,st11)  = de2bi(data_bufferf(:,st11)); 

                if  isldpc == 1; 

                    Recfind = [];

                    %LDPC译码

                    for ix = 1:Nbits

                        [vhatsd,nb_itersd,successsd] = func_Dec(2*data_bits(:,ix,st11)-1,HS{ix},N0,30);

                        Recfind(:,ix) = vhatsd(Ml+1:Nl)';

                    end

                end

                if  isldpc == 0; 

                    Recfind = [];

                    Recfind(:,:) = data_bits(:,:,st11);

                end                

                

                

                

                for st22=1:Nbase/2                                              

                    for st33=1:Nbits 

                        if Recfind(st22,st33)~=Tsignal0(st22,st33) 

                           Nerror(st11) = Nerror(st11) + 1; 

                        end 

                    end 

                end

            end

            error = error + mean(Nerror);

            IMAGE2(:,2*CNT-1:2*CNT) = Recfind;

    end

    

    Bers(j_snr)=error/(Nbase)/CNT/Nbits;

end 

 

%还原图像

subplot(122);

imshow(IMAGE2);

title('接收到的图像');

% figure;

% semilogy(SNRs,Bers,'b-s'); 

% xlabel('信噪比/dB'); 

% ylabel('误码率'); 

% grid on 

 

 

if SNRs == 2

   save r1_2.mat IMAGE IMAGE2

end

if SNRs == 5

   save r1_5.mat IMAGE IMAGE2

end

if SNRs == 10

   save r1_10.mat IMAGE IMAGE2

end

14_028_m

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