分别对比SVD和GMD非码本的预编码以及DFT和TxAA码本预编码的MIMO系统matlab误码率仿真

目录

一、理论基础

1. SVD(Singular Value Decomposition)非码本预编码

2. GMD(Generalized Maximal Ratio Combining)非码本预编码

3. DFT(Discrete Fourier Transform)码本预编码

4. TxAA(Transmit Antenna Array)码本预编码

二、核心程序

三、测试结果


一、理论基础

       对比SVD和GMD非码本的预编码以及DFT和TxAA码本预编码的MIMO系统matlab误码率仿真。预编码(Precoding)是数字通信中的一种技术,用于在发送端对数据进行处理,以改善数据在信道中的传输性能。预编码技术通常用于多天线通信系统,如MIMO(多输入多输出)系统,以及一些特定的通信标准中。预编码的主要目标是通过调整信号的相位、幅度或时间来改善通信系统的性能,包括以下方面:

  1. 抗干扰性: 预编码可以减小信号在信道中的失真和干扰,从而提高抗干扰性。它可以减小多径干扰、多用户干扰以及噪声对接收信号的影响。

  2. 增强信号质量: 预编码可以增强信号的质量,包括信噪比(SNR)的提高,从而使接收端能够更容易地恢复原始数据。

  3. 频谱效率: 在一些系统中,预编码可以增加频谱效率,允许在有限的频带宽度内传输更多的数据。

  4. 降低误码率: 通过有效的预编码,可以降低误码率,提高通信系统的可靠性。

不同类型的预编码技术可以用于不同的通信场景和系统要求。

1. SVD(Singular Value Decomposition)非码本预编码

       SVD预编码是一种基于奇异值分解的预编码技术。它将通信信道矩阵分解为三个矩阵的乘积,其中一个矩阵包含信道的奇异值,另外两个矩阵包含信道的左奇异向量和右奇异向量。SVD预编码可以最大程度地减小信道的干扰,从而提高通信性能。

2. GMD(Generalized Maximal Ratio Combining)非码本预编码

        GMD预编码是一种通用的最大比例合并预编码技术。它利用了信道矩阵的广义逆,将数据符号乘以适当的权重,以实现最大化接收信号的信噪比。GMD预编码在多用户通信和多天线系统中都有应用。

3. DFT(Discrete Fourier Transform)码本预编码

       DFT码本预编码是一种基于离散傅里叶变换的预编码技术。它利用了正交性质,在发送端将数据符号映射到傅里叶变换的频域上,然后乘以适当的权重进行预编码。DFT码本预编码在OFDM(正交频分复用)系统中得到广泛应用。

4. TxAA(Transmit Antenna Array)码本预编码

       TxAA预编码是一种利用天线阵列进行的预编码技术。它通过调整天线阵列中各个天线的相位和振幅,以实现对信号的编码和增强,从而改善信道的性能。

这些预编码技术在多天线系统中起着关键作用,可以提高信号传输的可靠性和效率。不同的技术适用于不同的通信场景和系统要求。选择适当的预编码技术需要综合考虑信道特性、天线配置、系统复杂度和性能需求等因素。

二、核心程序

function VV = func_GMD(h);
%GMD分解,按论文27页开始

%第一步:进行奇异值分解
[u0 s0 v0] = svd(h);
[m,n]      = size(s0);
R          = zeros(m, n) ;
P          = v0;
Q          = u0;
d          = diag(s0);
l          = min(m, n);
VV         = zeros(m, n);

for p = l : -1 : 1
    if ( d (p) >= 0.01 )
        break ;
    end
end
if ( p < 1 )
    return ;
end
if ( p < 2 )
    R (1, 1) = d (1) ;
    return ;
end

z         = zeros (p-1, 1) ;
large     = 2 ;           
small     = p ;           
perm      = [1 : p] ;     
invperm   = [ 1 : p ] ; 
sigma_bar = (prod (d (1:p)))^(1/p) ;
%第二步
for k = 1 : p-1
    flag = 0 ;
    if ( d (k) >= sigma_bar )    
        i = perm (small) ;
        small = small - 1 ;
        if ( d (i) >= sigma_bar )
            flag = 1 ;
        end
    else
        i = perm (large) ;
        large = large + 1 ;
        if ( d (i) <= sigma_bar )
            flag = 1 ;
        end
    end
        
    k1 = k + 1 ;
    if ( i ~= k1 )            
        t = d (k1) ;          
        d (k1) = d (i) ;
        d (i) = t ;
        j = invperm (k1) ;    
        perm (j) = i ;
        invperm (i) = j ;
        I = [ k1 i ] ;
        J = [ i k1 ] ;
        Q (:, I) = Q (:, J) ; 
        P (:, I) = P (:, J) ;
    end

    delta1 = d (k) ;
    delta2 = d (k1) ;
    t = delta1 + delta2 ;
    if ( flag )
        c = 1 ;
        s = 0 ;
    else
        f = (delta1 - sigma_bar)/(delta1 - delta2) ;
        s = sqrt (f*(delta1+sigma_bar)/t) ;
        c = sqrt(1-s^2) ;
    end
    d (k1) = delta1*delta2/sigma_bar ;          
    z (k) = s*c*(delta2 - delta1)*t/sigma_bar ; 
    R (k, k) = sigma_bar ;
    if ( k > 1 )
        R (1:k-1, k) = z (1:k-1)*c ;
        z (1:k-1) = -z (1:k-1)*s ;   
    end
   %第三步
    G1 = [ c -s
           s  c ] ;
    J = [ k k1 ] ;
    P (:, J) = P (:, J)*G1 ;        

    G2 = (1/sigma_bar)*[ c*delta1 -s*delta2
                         s*delta2  c*delta1 ] ;
    Q (:, J) = Q (:, J)*G2 ;       
end

%第四步
R (p, p) = sigma_bar ;
R (1:p-1, p) = z ;

VV = Q.*R.*P'; 
up55

三、测试结果

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Matlab中的SVD预编码是一种基于奇异值分解(SVD)的预编码技术。SVD预编码用于多输入多输出(MIMO系统中,旨在减小多天线之间的干扰并提高系统的信号传输性能。通过对信道矩阵进行奇异值分解,可以将其分解为三个矩阵的乘积,分别是左奇异向量矩阵、奇异值矩阵和右奇异向量矩阵。其中左奇异向量矩阵和右奇异向量矩阵可以用来进行信号预编码和解码,而奇异值矩阵则可以用来调整信号的功率分配。 具体而言,SVD预编码将发送信号进行线性变换,使得发送天线之间的干扰最小化。在SVD预编码的过程中,首先计算信道矩阵的奇异值分解,然后选择奇异值较大的部分作为信号的主要分量,将其与相应的奇异向量进行乘法运算,从而得到预编码后的信号。这样,接收端可以通过解码来恢复出原始的信号,并减小多天线之间的干扰。 需要注意的是,SVD预编码是一种线性预编码技术,适用于多输入多输出系统中的矩阵信道模型。它可以有效提高系统的信号传输性能,降低误码率,并提高系统的容量。同时,SVD预编码也可以结合其他线性预编码技术来进一步优化系统的性能。 综上所述,Matlab中的SVD预编码是一种基于奇异值分解的预编码技术,用于减小多天线之间的干扰并提高系统的信号传输性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MIMO系统的ZF和MMSE预编码算法_4发4收_matlab源码](https://download.csdn.net/download/m0_53407570/84702723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [ZF、MMSE、SLNR、BD、SVD|几种常见的预编码原理总结加仿真](https://blog.csdn.net/gsy_1234567/article/details/115999021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [预编码 matlab,无线通信-预编码-MATLAB代码合集](https://blog.csdn.net/weixin_29003437/article/details/115966389)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值