zoukankan      html  css  js  c++  java
  • CCS

    At the transmitter, the sequence of information bits is fed into a symbol mapper that maps a block of
    bits into signal points {sd selected from a signal constellation such as PAM, PSK, or
    QAM, consisting of M = 2^b signal points. These signal points are fed as a block to
    a space-time encoder that maps the information symbols to a parallel set of identical
    modulators. In turn, the modulators map the signal points into corresponding waveforms
    that are transmitted simultaneously on the Nr antennas. Below, we describe two
    types of space-time codes: block codes and trellis codes.

     Space-Time Block Codes

    A space-time block code (STBC) is defined by a generator matrix G, having N rows
    and Nr columns, of the form

       

    in which the elements {gij} are signal points resulting from a mapping of information
    bits to corresponding signal points from a binary or M-ary signal constellation. By
    employing Ny transmit antennas, each row of G may contain up to Ny different signal
    points (symbols), which are transmitted on the Ny antennas in a time slot. Thus, the
    first row of symbols in G is transmitted on the Ny antennas in the first time slot, the
    second row of symbols in G is transmitted on the Ny antennas in the second time slot,
    and the Nth row of symbols in G is transmitted on the Ny antennas in the Nth time slot.
    Therefore, N time slots are used to transmit the symbols in the N rows of the generator
    matrix G. The ratio of the number of different symbols transmitted to the number of
    time slots is called the spatial code rate Rs  = Nt / N.

    In the design of the generator matrix of a STBC, it is desirable to focus on three
    principal objectives: (1) achieving the highest possible diversity of NyNR, (2) achieving
    the highest possible (throughput) rate, and (3) minimizing the complexity of the
    decoder.

    Space-Time Block Codes(STBC)

     

    Matlab simulation code

     1 % MATLAB script for STBC of MISO Nt=2 Nr=1 
     2 echo on;
     3 Nt = 2;                             % No. of transmit antennas
     4 Nr = 1;                             % No. of receive antennas
     5 codebook = [1+1i 1-1i -1+1i -1-1i]; % Reference codebook
     6 Es = 2;                             % Energy per symbol
     7 SNR_dB = 5:5:20;                    % SNR in dB
     8 No = Es*10.^(-1*SNR_dB/10);         % Noise variance
    9 % Preallocation for speed: 10 Dist1 = zeros(1,4); % Distance vector for s1 11 Dist2 = zeros(1,4); % Distance vector for s1 12 BER = zeros(1,length(SNR_dB));
    13 % Maximum Likelihood Detector: 14 echo off; 15 for i = 1:length(SNR_dB) 16 no_errors = 0; 17 no_symbols = 0; 18 while no_errors <= 100 19 s = 2*randi([0 1],1,2)-1 + 1i*(2*randi([0 1],1,2)-1); 20 no_symbols = no_symbols + 2;
    21 % Channel coefficients 22 h = 1/sqrt(2) * (randn(1,2) + 1i*randn(1,2));
    23 % Noise generation: 24 noise = sqrt(No(i))*(randn(2,1) + 1i*randn(2,1));
    25 % Correlator outputs: 26 y(1) = h(1)*s(1) + h(2)*s(2) + noise(1); 27 y(2) = -h(1)*conj(s(2)) + h(2)*conj(s(1)) + noise(2);
    28 % Estimates of the symbols s1 and s2: 29 s_h(1) = y(1)*conj(h(1)) + conj(y(2))*h(2); 30 s_h(2) = y(1)*conj(h(2)) - conj(y(2))*h(1);
    31 % Maximum-Likelihood detection: 32 for j = 1 : 4 33 Dist1(j) = abs(s_h(1)-codebook(j)); 34 Dist2(j) = abs(s_h(2)-codebook(j)); 35 end 36 [Min1 idx1] = min(Dist1); 37 [Min2 idx2] = min(Dist2); 38 s_t(1) = codebook(idx1); 39 s_t(2) = codebook(idx2);
    40 % Calculation of error numbers: 41 if s_t(1) ~= s(1) 42 no_errors = no_errors + 1; 43 end 44 if s_t(2) ~= s(2) 45 no_errors = no_errors + 1; 46 end 47 end 48 BER(i) = no_errors/no_symbols; 49 end 50 echo on; 51 semilogy(SNR_dB,BER) 52 xlabel('SNR (dB)') 53 ylabel('Symbol Error Rate (SER)') 54 legend('Alamouti: 4-PSK')


    simulation result

    Reference,

      1. <<Contemporary Communication System using MATLAB>> - John G. Proakis

  • 相关阅读:
    利用burpsuite实现重放攻击
    木马分析(隐藏分析)实验
    使用wireshark分析TLS
    ECharts折线图循环展示数据、自定义色值(渐变)
    Sumblime Text3格式化代码
    ECharts柱状图彩色柱状图(渐变),自定义鼠标移入小圈颜色、鼠标移入后提示框显示不全问题、渲染到页面中
    C#多线程学习(五) 多线程的自动管理(定时器)
    SQL取出 所有周六 周日的日期
    C#多线程学习(二) 如何操纵一个线程
    简单读写XML文件
  • 原文地址:https://www.cnblogs.com/zzyzz/p/13610724.html
Copyright © 2011-2022 走看看