初识MIMO(四):MIMO的接收端检测技术及其仿真

初识MIMO(四):MIMO的接收端检测技术及其仿真

零 代码地址

https://github.com/liu-zongxi/MIMO_simulation

请大家看完觉得有用别忘了点赞收藏,github项目给star哦

一. 接收端检测技术概念

我们之前的仿真已经包含了SISO,MISO,SIMO,而检测技术就是MIMO中非常重要的一个技术,他的目的是从接收端提取出每一根发射天线的信号,此时,别的信号成为了干扰,也就第一次有了信干噪比的概念。

image-20220429105259723

image-20220429105328853

image-20220429105351747

二. 仿真

1.代码展示

%------------------ZF和MMSE检测算法----------------%
%-----------------------author:lzx-------------------------%
%-----------------------date:17点18分-----------------%
%% 参数设置
NT = 4;
NR = 4;     % 天线数
L_frame = 100;  %帧长度
N_iter = 1000;  % 循环次数
SNRs_dB = 3:1:20;   % 信噪比
SNRs = 10.^(SNRs_dB./10);
N_SNR = length(SNRs);
Nmod = 2;       % QPSK
N_case = 3;          % 不同类型
BERs = zeros(N_case, N_SNR);
gss = ["-kx" "-^" "-ro" "-b>" "-g<" "-m+"];   % 画图图像,注意使用双引号
%% 主函数
for icase = 1:N_case
    gs = gss(icase);
    if icase == 1
        W_formula = @(Hiid, sigma, NT) Hiid'*inv(Hiid*Hiid');
    elseif icase == 2
        W_formula = @(Hiid, sigma, NT) Hiid'*inv(Hiid*Hiid'+2*sigma.^2*diag(ones(1,NT)));
    elseif icase == 3
        W_formula = @(Hiid, sigma, NT) inv(Hiid);
    end
    for isnr = 1:N_SNR
        SNR = SNRs(isnr);
        n_biterror = 0;
        for iiter = 1:N_iter
            % 生成数据
            frame_origin = randi([0,1],L_frame,Nmod*NT);
            % QPSK调制
            frame_mod=QPSKMod(frame_origin,L_frame, NT);
            % 生成信道,SIMO有NR个信道
            Hiid = (randn(NR,NT)+1j*randn(NR,NT))./sqrt(2);
            %  AWGN噪声
            sigma = sqrt(1/(2*SNR));
            noise = sigma*(randn(L_frame, NR) + 1j*randn(L_frame, NR));
            % 接收信号
            y = frame_mod*Hiid+noise;
            % 信号检测
            W = W_formula(Hiid, sigma, NT);
            x_tilde = y*W;
            % 解调
            frame_demod = QPSKDemod(x_tilde,L_frame,NT);
            % 计算误码率
            n_biterror_tmp = sum(sum(abs(frame_demod - frame_origin)))
            n_biterror = n_biterror + n_biterror_tmp;
        end
        BERs(icase, isnr) = n_biterror/(N_iter*L_frame*Nmod*2);
        semilogy(SNRs_dB,BERs(icase,:),gs);
        hold on;
        axis([SNRs_dB([1 end]) 1e-6 1e0])
    end
end

2.一些思考

  1. ZF和MMSE的目的是什么?

这个问题是绕了我很久的,直接×H的逆矩阵不就完了

后来我明白了ZF检测其实就是乘以了一个逆矩阵,不过他是“伪逆矩阵”

image-20220429115343499

我在《通信新读》中看到了对ZF和MMSE的不同理解

image-20220429115534188

image-20220429115606821

image-20220429115700166

可以看到MCR的目标是最大化MCR,ZF的目标是最大化SIR,MMSE的目标是最大化SINR

  1. 对于MIMO如何处理矩阵问题

这也是我在这个仿真中发现的,不能再借用所谓的.*了,会把逻辑搞的很混乱,后面会改为标准的矩阵运算

三.补充

检测算法是很博大精深的,后面有机会在补充别的算法

  • 6
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值