在这里,我们采用2*2的MIMO系统,根据上面的理论,我们开始设计一个简单的MIMO系统。

首先,定义发送天线和接收天线,这里根据课题要求,都设置为2,当然可以根据实际的需要将系统设置为我们所需要的数目,我们将对不同天线数目的系统做简单的对比。

   

这里我们根据前面的理论分析,将信道理论做间的处理,得到一个简单的信道模型,其表达式如上代码所示。

将当送信号做串并处理,将处理得到的信号放入到sMatrix0矩阵中,这一步比较简单,这里就不多做介绍了。

这里,将信号做BPSK调制,然后利用高斯白燥声来模拟信道。通过以上步骤,我们基本完成过了MIMO系统的发送模块的设计。

在接收端,我们主要做对系统的逆运算处理就可以了,即PSK解调和并串转变就可以了。这样一个简单的2*2MIMO系统就完成了。下面我们将对系统的做简单的仿真分析。

图3-1 2*2MIMO系统性能仿真

图3-2 不同天线数目MIMO系统性能比较

如上图所示,自上而下分别为8*8MIMO系统性能曲线,4*4MIMO MIMO系统性能曲线和2*2 MIMO系统性能曲线,通过比较,当天线数目越多则MIMO系统的性能越好,当然在实际中,我们更多的采用8*8 MIMO系统,从而获得更高性能的通信质量。

部分核心代码:

clc;
clear;

O=[1 -2 -3;2+j 1+j 0;3+j 0 1+j;0 -3+j 2+j];                         
Nt=2;      %发送天线个数         
Nr=2;      %接收天线数量

timer=4;                                                 
                                                           
Number_bit=1000;    %发送符号数量                                                    
mod=4;

min_snr=3;      %最小信噪比                                                   
max_snr=15;     %最大信噪比

num_X=1;
num_bit_per_sym=log2(mod);%每个符号所有的比特数

for cc_ro=1:timer
    for cc_co=1:Nt
        num_X=max(num_X,abs(real(O(cc_ro,cc_co))));
    end
end

co_x=zeros(num_X,1);
for con_ro=1:timer                                                
    for con_co=1:Nt
        if abs(real(O(con_ro,con_co)))~=0
            delta(con_ro,abs(real(O(con_ro,con_co))))=sign(real(O(con_ro,con_co)));
            epsilon(con_ro,abs(real(O(con_ro,con_co))))=con_co;
            co_x(abs(real(O(con_ro,con_co))),1)=co_x(abs(real(O(con_ro,con_co))),1)+1;
            eta(abs(real(O(con_ro,con_co))),co_x(abs(real(O(con_ro,con_co))),1))=con_ro;
            coj_mt(con_ro,abs(real(O(con_ro,con_co))))=imag(O(con_ro,con_co));
        end
    end
end

eta=eta.';                                                           
eta=sort(eta);
eta=eta.';
for SNR=min_snr:max_snr                                              
    clc
    disp('Wait until SNR=');disp(max_snr);
    SNR
    n_err_sym=0;
    n_err_bit=0;
    graph_inf_sym(SNR-min_snr+1,1)=SNR;
    graph_inf_bit(SNR-min_snr+1,1)=SNR;
    for con_sym=1:Number_bit
        bi_data=randint(num_X,num_bit_per_sym);                     
        de_data=bi2de(bi_data);                                     
        data=pskmod(de_data,mod,0,'gray');
        H=randn(Nt,Nr)+j*randn(Nt,Nr);                             
        XX=zeros(timer,Nt);
        for con_r=1:timer                                          
            for con_c=1:Nt
                if abs(real(O(con_r,con_c)))~=0
                    if imag(O(con_r,con_c))==0
                        XX(con_r,con_c)=data(abs(real(O(con_r,con_c))),1)*sign(real(O(con_r,con_c)));
                    else
                        XX(con_r,con_c)=conj(data(abs(real(O(con_r,con_c))),1))*sign(real(O(con_r,con_c)));
                    end
                end
            end
        end   
        
        
        H=H.';
        XX=XX.';
        snr=10^(SNR/10);
        Noise=(randn(Nr,timer)+j*randn(Nr,timer));               
        Y=(sqrt(snr/Nt)*H*XX+Noise).';                              
        H=H.';                                                      
        for co_ii=1:num_X
            for co_tt=1:size(eta,2)
                if eta(co_ii,co_tt)~=0
                    if coj_mt(eta(co_ii,co_tt),co_ii)==0
                        r_til(eta(co_ii,co_tt),:,co_ii)=Y(eta(co_ii,co_tt),:);
                        a_til(eta(co_ii,co_tt),:,co_ii)=conj(H(epsilon(eta(co_ii,co_tt),co_ii),:));
                    else
                        r_til(eta(co_ii,co_tt),:,co_ii)=conj(Y(eta(co_ii,co_tt),:));
                        a_til(eta(co_ii,co_tt),:,co_ii)=H(epsilon(eta(co_ii,co_tt),co_ii),:);
                    end
                end
            end
        end
        RR=zeros(num_X,1);
        for ii=1:num_X                                               
            for tt=1:size(eta,2)
                for jj=1:Nr
                    if eta(ii,tt)~=0
                        RR(ii,1)=RR(ii,1)+r_til(eta(ii,tt),jj,ii)*a_til(eta(ii,tt),jj,ii)*delta(eta(ii,tt),ii);
                    end
                end
            end
        end
        re_met_sym=pskdemod(RR,mod,0,'gray');                     
        re_met_bit=de2bi(re_met_sym);
        re_met_bit(1,num_bit_per_sym+1)=0;                          
        for con_dec_ro=1:num_X                                             
            if re_met_sym(con_dec_ro,1)~=de_data(con_dec_ro,1)
                n_err_sym=n_err_sym+1;
                for con_dec_co=1:num_bit_per_sym
                    if re_met_bit(con_dec_ro,con_dec_co)~=bi_data(con_dec_ro,con_dec_co)
                        n_err_bit=n_err_bit+1;
                    end
                end
            end
        end
    end
    Perr_sym=n_err_sym/(num_X*Number_bit);                                 
    graph_inf_sym(SNR-min_snr+1,2)=Perr_sym;
    Perr_bit=n_err_bit/(num_X*Number_bit*num_bit_per_sym);
    graph_inf_bit(SNR-min_snr+1,2)=Perr_bit;
end
x_sym=graph_inf_sym(:,1);                                          
y_sym=graph_inf_sym(:,2);
subplot(211);
semilogy(x_sym,y_sym,'r-*');

x_bit=graph_inf_bit(:,1);
y_bit=graph_inf_bit(:,2);
subplot(212);
semilogy(x_bit,y_bit,'b-*');

A01-05

基于MATLAB的MIMO系统分层空时码的仿真相关推荐

  1. 传输预编码matlab,基于MATLAB的MIMO系统预编码性能仿真教程.doc

    基于MATLAB的MIMO系统预编码性能仿真教程 PAGE \* MERGEFORMAT - 33 - 摘要在现今的移动通信系统中,被极多的国际通信标准采纳为基础性关键技术的一种方法是多输入多输出的技 ...

  2. 传输预编码matlab,基于MATLAB的MIMO系统预编码性能仿真.doc

    基于MATLAB的MIMO系统预编码性能仿真.doc (33页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分  摘要在现今的移动通信系统 ...

  3. 基于MATLAB的MIMO系统ZF破零均衡仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 MIMO的空分复用技术可以使得系统在系统带宽和发射带宽不变的情况下容易地获得空间分集增益和信道的容量 ...

  4. 基于 Matlab 的 Alamouti 空时码及 MRC 接收分集仿真对比

    基于 Matlab 的 Alamouti 空时码及 MRC 接收分集仿真对比 1. 分集技术概述 1.1 空间分集技术 1.1.1 接收分集 1.1.2 发射分集 2. 基于 Matlab 的 BER ...

  5. 基于matlab的mimo仿真,基于MATLAB的MIMO系统仿真与分析|Matlab代做

    核心提示:基于MATLAB的MIMO系统仿真与分析|Matlab代做... 近年来,人们对无线通信业务需求的爆炸式增长激励着研究工作者们在相关领域的各个层面不断寻求技术突破,期望以更完美的解决方案来满 ...

  6. 基于matlab的mimo仿真,基于MATLAB的MIMO通信系统仿真报告.doc

    基于MATLAB的MIMO通信系统仿真报告 北京邮电大学 基于Matlab的MIMO通信系统仿真 班级: 姓名: 学号: 日 期: 目录 一. 概述3 (1)课设目的3 (2)数字通信系统概述3 二. ...

  7. 【分布式空时编码+LDPC】协作MIMO中分布式空时编码和LDPC编译码技术的仿真

    1.软件版本 matlab2013b 2.部分源码 clc; close all; clear all; warning off;Frame_Length = 120; %每次仿真数据个数 Error ...

  8. 基于Matlab的MIMO通信系统仿真

    OFDM技术通过将频率选择性多径衰落信道在频域内转换为平坦信道,减小了多径衰落的影响.OFDM技术如果要提高传输速率,则要增加带宽.发送功率.子载波数目,这对于频谱资源紧张的无线通信时不现实的. MI ...

  9. 基于MATLAB计算MIMO信道容量(附完整代码与分析)

    目录 一.介绍 二. 代码 三. 运行结果及分析 3.1  MIMO信道容量:固定发射天线数为4 3.2 MIMO信道容量:固定接收天线数为4 3.3 AWGN信道与瑞利信道容量 四. 总结 一.介绍 ...

最新文章

  1. Eclipse 官宣,干掉 VS Code !
  2. 使用Telnet与ssh协议远程登录linux系统
  3. window.opener.document.getElementById(“a”)用标准的Jquery 语言怎么写
  4. COM 组件设计与应用(一)
  5. SQL语句--INSERT INTO SELECT 语句用法示例
  6. php 卡号算法,PHP实现通过Luhn算法校验信用卡卡号是否有效_PHP
  7. win7 搭建 caffe 以及 python 接口配置
  8. signature=73d4f2b7e55a02359b7d1bf362a074d6,SHOCK ABSORBER
  9. vue-cli+webpack打包配置
  10. 航空公司VIP客户查询(25 分)(Hash)
  11. MicroMsg.SDK.WXApiImplV10: register app failed for wechat app signature check failed
  12. 最全的Magisk模块下载
  13. java数字转读音_java 数字转汉语读音的程序
  14. SQL Server如何备份数据库?完整数据库备份方式
  15. 选哪个:游戏开发和传统软件开发?
  16. 数据分析之--Mataplotlib入门
  17. Linux 使用ffmpeg修改和压缩视频文件格式
  18. Python 修改图像中的像素值
  19. python爬取阿里巴巴网站实现
  20. IDM下载慢 没有权限下载如何解决?

热门文章

  1. Java高效读取大文件
  2. Azure SQL 数据库引入了新的服务级别
  3. Windows下Android平台搭建_1
  4. hdu 1789 Doing Homework again
  5. c++ file operation (reference 5)
  6. const pointer
  7. 一些 Windows 命令行学习
  8. C++ 通讯录学习总结
  9. ElasticStack系列之十六 ElasticSearch5.x index/create 和 update 源码分析
  10. 火星今天飞抵西非国家寻找埃博拉疫情