⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stbc_ofdm_csi_two_block.asv

📁 是关于空时编码的nrs
💻 ASV
字号:
%==========================================================================% "Channel estimation via training in time domain and tracking in frequcy % domain for STBC-OFDM(Two OFDM symbols) Systems"% Sun Jie-ting, 08.11.2004, East China Uni. Science and Technology,Shanghai% Results of SER%==========================================================================%clc;clear all;Nt = 2;Nr = 1;NFFT = 128;               % FFT lengthG = 10;                   % Guard interval lengtht_a = 0.8*10^(-6);       % Sampling duration of wireless communication%-------------------------------------------------% Parameters for Monte Carlo channel%-------------------------------------------------symbol_duration = NFFT * t_a;   %OFDM symbol durationnumber_of_summations = 40;      % Number of summations for Monte-Carlo methodf_dmax = 50.0;                  % Maximum Doppler frequencyload h_decimation.am -ascii;h1_initial = h_decimation;h2_initial = h_decimation;N_P  = length(h_decimation); NoOFDMSymbol = 4;        %Number of OFDM symbolOFDMSymbolbits = NFFT;      %Number of bits per OFDM symbol conveyslength_data = NoOFDMSymbol * NFFT;                              % The total data length                                                                                Number_Relz = 100;ser_relz = [];%for number_of_relialization= 1: Number_Relz;   u1 = rand(N_P,number_of_summations); % A random variableu2 = rand(N_P,number_of_summations); % A random variable%---------------------------% Data for STBC demodulation%---------------------------data_for_destbc = zeros(2,1,16);data_qpsk = [1+j;-1+j;-1-j;1-j]/sqrt(2);for k=1:4    for m=1:4        data_for_destbc(:,:,4*(k-1)+m) = [data_qpsk(k);data_qpsk(m)];    end end%----------------------------% QPSK modulator in base band%----------------------------------------------BitFrameC1=(2*round(rand(Nt,OFDMSymbolbits,NoOFDMSymbol/2))-1)/sqrt(Nt);QpskDataC1=BitFrameC1(1,:,:)+j*BitFrameC1(2,:,:);BitFrameC2=(2*round(rand(Nt,OFDMSymbolbits,NoOFDMSymbol/2))-1)/sqrt(Nt);QpskDataC2=BitFrameC2(1,:,:)+j*BitFrameC2(2,:,:);%--------------------% Alamouti space-time modulator in base band%--------------------Stbc1=zeros(1,OFDMSymbolbits,NoOFDMSymbol);Stbc2=zeros(1,OFDMSymbolbits,NoOFDMSymbol);for k=1:NoOFDMSymbol/2QpskDataC1;    Stbc1(:,:,:2*k-1) = QpskDataC1(:,:,k);    Stbc1(:,:,2*k) = -conj(QpskDataC2(:,:,k));    Stbc2(:,:,:2*k-1) = QpskDataC2(:,:,k);    Stbc2(:,:,2*k) = conj(QpskDataC1(:,:,k));end%-----------------------------------------------% Insert training sequence%%-----------------------------------------------%----------------------------------------% FFT matrix%----------------------------------------F = [];for k=0:NFFT-1    W_tem = [];    for n = 0:NFFT-1;        W_tem = [W_tem,exp(-j*2*pi*n*k/NFFT)];    end;    F = [F;W_tem];end;%------------------------------------------------------------------------% Transmitted signal of trasmitt antena 1 to receive antenna (channel:h1)%------------------------------------------------------------------------ser_without_isic = [];snr_min =12;snr_max =12;step = 1;for snr = snr_min:step:snr_max;     disp('snr = ');    disp(snr);h1_frame = [];rs1MP_frame = [];initial_time=0;                 % Initial timefor i=1:NoOFDMSymbol/2;  OFDM_signal_tem1 = OFDM_Modulator(Stbc1(1,:,2*i-1),NFFT,G);  OFDM_signal_tem2 = OFDM_Modulator(Stbc1(1,:,2*i),NFFT,G);   % OFDM signal from the first transmitt antenna is created     [h1, t] = MCM_channel_model(u1, initial_time, number_of_summations, symbol_duration, ...,       f_dmax, h1_initial);  h1_frame = [h1_frame;h1];  initial_time = t;     rs1MP1 = conv(OFDM_signal_tem1, h1);   rs1MP2 = conv(OFDM_signal_tem2, h1);   rs1MP_frame = [rs1MP_frame; rs1MP1;rs1MP2];   clear OFDM_signal_tem1;   clear OFDM_signal_tem2;   end;%------------------------------------------------------------------------% Transmitted signal of antenna 2 to receive antenna 1 (channel: h2)%-----------------------------------------------------------------------h2_frame = [];rs2MP_frame = [];initial_time=0;                 % Initial timefor i=1:NoOFDMSymbol/2;   OFDM_signal_tem11 = OFDM_Modulator(Stbc2(1,:,2*i-1),NFFT,G);   OFDM_signal_tem12 = OFDM_Modulator(Stbc2(1,:,2*i),NFFT,G);      % OFDM signal from the second antenna is created   [h2, t] = MCM_channel_model(u2, initial_time, number_of_summations, symbol_duration, ...,       f_dmax, h2_initial);   h2_frame = [h2_frame;h2];   initial_time = t;   rs2MP1 = conv(OFDM_signal_tem1, h2);   rs2MP2 = conv(OFDM_signal_tem2, h2);      rs2MP_frame = [rs2MP_frame; rs2MP1;rs2MP2];   clear OFDM_signal_tem1;   clear OFDM_signal_tem2;   end;%-----------------% Recever: OFDM demodulator, channel estimation%-----------------for i=1:NoOFDMSymbol/2;   rsBeforeAwgn1_i = rs1MP_frame(2*i-1,:) + rs2MP_frame(2*i-1,:);   rsBeforeAwgn2_i = rs1MP_frame(2*i,:) + rs2MP_frame(2*i,:);%    rs_i =   rsBeforeAwgn_i;   rs_i = awgn(rsBeforeAwgn_i,snr,'measured','dB');   Demodulated_rs_i = OFDM_Demodulator(rs_i,NFFT,NFFT,G);   H1_i = fft([h1_frame(i,:) zeros(1,NFFT-N_P)]);   H2_i = fft([h2_frame(i,:) zeros(1,NFFT-N_P)]);%   X1 = Stbc1(:,:,i).*H1_i%   X2 = Stbc2(:,:,i).*H2_i   %--------------------------   % Demodulated signal    %--------------------------    for l=1:OFDMSymbolbits/2;       R1=Demodulated_rs_i(2*l-1);       R2=Demodulated_rs_i(2*l);%       Y1 = X1(1,2*l-1,i)+X2(1,2*l-1,i)%       Y2 = X1(1,2*l,i)+X2(1,2*l,i)       R2conj = conj(R2);       R_n2l=[R1;R2conj];%       H1111=[H1_i(2*l-1) H2_i(2*l-1);H1_i(2*l) H2_i(2*l)]       H_n2l = [H1_i(2*l-1) H2_i(2*l-1);conj(H2_i(2*l)) -conj(H1_i(2*l))];       minNorm = 10000;       num_min = 0;        for m=1:16%            data_com = data_for_destbc(m,:)';            dec_norm = norm(R_n2l-H_n2l*data_for_destbc(:,:,m))^2;            if dec_norm < minNorm;                    minNorm = dec_norm;                    num_min = m;            end         end         deStbc = data_for_destbc(:,:,num_min);%         [QpskDataC1(1,l,i) QpskDataC2(1,l,i)]%         TrSTBC = [conj(Stbc1(1,2*l-1,i)) conj(Stbc2(1,2*l-1,i))];         TrSTBC = [Stbc1(1,2*l-1,i);Stbc2(1,2*l-1,i)];         pause         if deStbc==TrSTBC             disp('ok');         else             disp('No');         end   end;end;   end;%ser = sum(ser_relz)/Number_Relz;%snr = snr_min:step:snr_max;%semilogy(snr, ser,'b*');%ylabel('SER');%xlabel('SNR');%data = [snr; ser];%save ser_sufficientGL.am data -ascii;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -