基于alamouti的STBC空时分组码误码率matlab仿真

up目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

        空时分组码是一种在无线通信中使用的技术,用于在多个天线上发送数据流的多个副本,并利用各种接收的数据版本来提高数据传输的可靠性。 传输信号必须穿过具有散射,反射,折射等的潜在困难环境,然后可能被接收器中的热噪声进一步破坏,这意味着一些接收到的数据副本将比其他更好。 这种冗余导致能够使用一个或多个接收到的副本来正确解码接收信号的机会更高。 实际上,空时编码以最佳方式组合所接收信号的所有副本,以尽可能多地从每个副本中提取信息。

       "Alamouti的STBC(Space-Time Block Coding)",也称为Alamouti编码,是一种用于无线通信系统中的空时编码技术。它是一种基于分集(diversity)和多天线系统的技术,旨在提高无线信道中的可靠性和数据传输速率。Alamouti编码是一种简单而有效的空时编码方案,适用于2个天线的无线通信系统。它通过发送两个时间步长(Time Slot)内的数据符号,利用天线之间的空时分集效应来实现信号的冗余传输和多路径干扰的抵消。

        Alamouti编码的基础场景是两根发射天线,一根接收天线,并且发射机不知道信道,那么该如何发射。实现方式:一次性发送两个数据。因为只有一根接收天线,所以要再发送一次,接收端才能正常接收。

发射信号编码矩阵(其中x i x_ix i表示第i ii个发送信息块,第i ii行是第i ii个天线的发送信号)

在这里插入图片描述

两个信号都分别经过了两个信道,获得了分集的效果。方程改写为:
在这里插入图片描述        基于Alamouti提出的BPSK调制下空时分组码在Rayleigh衰落信道中的码性能原理,推导出高阶(M ary)调制下Rician衰落信道中空时分组码的符号差错率的最小距离球界,并进行计算机仿真分析了两信道下引入空时分组码的多天线系统中发射和接收天线的分集增益,发射天线数量的"地板效应"以及Rician因子K对符号差错性能的影响。 

       这是一个非常特殊的STBC。它是唯一达到率-1的正交STBC。也就是说,它是唯一能够在不需要牺牲数据速率的情况下实现其全部分集增益的STBC。严格地说,这仅适用于复杂的调制符号。由于几乎所有的星座图都依赖于复数,因此该属性通常使Alamouti的代码比高阶STBC具有显着的优势,即使它们实现了更好的错误率性能。有关详细信息,请参阅“速率限制”。

        Alamouti在1998年提出的建议的重要性在于它首次证明了一种编码方法,它能够在接收机上实现线性处理的完全多样性。早期关于发射分集的提议需要处理方案,其与发射天线的数量成指数地缩放。此外,它是第一个具有这种能力的开环发射分集技术。随后对Alamouti概念的概括已经对无线通信行业产生了巨大影响。

        最初引入的STBC和通常研究的STBC是正交的。 这意味着STBC被设计成使得表示从编码矩阵中取出的任何列对的矢量是正交的。 其结果是接收器处的简单,线性,最佳解码。 其最严重的缺点是,除了满足此标准的一个代码之外的所有代码都必须牺牲其数据速率的某些比例(参见Alamouti的代码)。

        此外,存在准正交STBC,其以符号间干扰(ISI)为代价实现更高的数据速率。 因此,它们的差错率性能受正交速率1 STBC之一的限制,正交速率1 STBC由于正交性而提供ISI自由传输。

特点:

  1. 分集增益: Alamouti编码通过将数据在时间步长内通过两个天线同时发送,有效地提高了系统的分集增益,使得在多径信道中有更好的抗干扰性能。

  2. 简单实现: Alamouti编码的实现相对简单,只需要进行一些基本的复数运算。因此,它适用于资源受限的通信系统。

  3. 频谱效率: Alamouti编码在同样的频带宽度下,能够实现2倍的频谱效率,因为它在每个时间步长内同时传输两个数据符号。

  4. 适用性: Alamouti编码适用于需要考虑频谱效率和抗干扰性能的无线通信系统,尤其是在具有2个天线的情况下。

二、核心程序

..................................................................
for ii = 1:length(Eb_N0_dB)
    ii
    % Transmitter
    ip = rand(1,N)>0.5; % generating 0,1 with equal probability
    s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 0

    % Alamouti STBC 
    sCode = 1/sqrt(2)*kron(reshape(s,2,N/2),ones(1,2)) ;

    % channel
    h = 1/sqrt(2)*[randn(nRx,N) + j*randn(nRx,N)]; % Rayleigh channel
    n = 1/sqrt(2)*[randn(nRx,N) + j*randn(nRx,N)]; % white gaussian noise, 0dB variance

    y = zeros(nRx,N);
    yMod = zeros(nRx*2,N);
    hMod = zeros(nRx*2,N);
    for kk = 1:nRx
.............................................................................

    end

    % equalization 
    hEqPower = sum(hEq.*conj(hEq),1);
    yHat = sum(hEq.*yMod,1)./hEqPower; % [h1*y1 + h2y2*, h2*y1 -h1y2*, ... ]
    yHat(2:2:end) = conj(yHat(2:2:end));

    % receiver - hard decision decoding
    ipHat = real(yHat)>0;

    % counting the errors
    nErr(ii) = size(find([ip- ipHat]),2);

end
...................................................................................

close all
figure
semilogy(Eb_N0_dB,theoryBer_nRx1,'bp-','LineWidth',2);
hold on
semilogy(Eb_N0_dB,theoryBerMRC_nRx2,'kd-','LineWidth',2);
semilogy(Eb_N0_dB,theoryBerAlamouti_nTx2_nRx1,'c+-','LineWidth',2);
semilogy(Eb_N0_dB,simBer,'mo-','LineWidth',2);
axis([0 25 10^-5 0.5])
grid on
legend('theory (nTx=1,nRx=1)', 'theory (nTx=1,nRx=2, MRC)', 'theory (nTx=2, nRx=1, Alamouti)', 'sim (nTx=2, nRx=2, Alamouti)');
xlabel('Eb/No, dB');
ylabel('Bit Error Rate');
title('BER for BPSK modulation with 2Tx, 2Rx Alamouti STBC (Rayleigh channel)');
up106

三、测试结果

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fpga和matlab

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

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

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

打赏作者

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

抵扣说明:

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

余额充值