| []=one_shot_STBC4(code_name,rate,num_code,nr,N,Modulation,Mod_State_Nb,SNR)
|
function []=one_shot_STBC4(code_name,rate,num_code,nr,N,Modulation,Mod_State_Nb,SNR)
%HELP one_shot_STBC4
%
%Blind detection of the STBC of a MIMO communication using 4 antennas.
%The list of provided STCB is:
%
%Spatial Multiplexing (code_name='SM', rate='4', num_code=1)
%3-rate STBC4 (code_name='STBC4', rate='3', num_code=1)
%2-rate STBC4 (code_name='STBC4', rate='2', num_code=1 or 2)
%1-rate STBC4 (code_name='STBC4', rate='1', num_code=1)
%3/4-rate STBC4 (code_name='OSTBC4', rate='3/4', num_code=1)
%1/2-rate STBC4 (code_name='OSTBC4', rate='1/2', num_code=1)
%
%Input: - code_name (see above)
% - rate (see above)
% - num_code: 1 (see above)
% - nr (> 4)
% - N (Number of received sample)
% - Modulation: 'PSK','PAM' or 'QAM'
% - Mod_State_Nb: Nomber of state of the modulation
% - SNR (dB)
%
%Input: - None
%
%Exemple: one_shot_STBC4('OSTBC4','3/4',1,5,512,'PSK',4,10)
%
%reference: [1] V. Choqueuse, M. Marazin, L. Collin, K.C. Yao, K and G. Burel
%"Blind Recognition of Linear SpaceTime Block Codes: A Likelihood-Based
%Approach" IEEE Transactions on Signal Processing, Vol 58 (3), p 1290-1299,
%2010
code_name_list={'SM','STBC4','STBC4','STBC4','STBC4','OSTBC4','OSTBC4'};
rate_list={'4','3','2','2','1','3/4','1/2'};
num_code_list=[1 1 1 2 1 1 1];
rate_num=str2num(rate);
%% MIMO Communication Simulation
data=randint(1,N*rate_num,Mod_State_Nb); %symboles qui seront cod
%modulation
switch Modulation
case 'PSK'
symbols_s=pskmod(data,Mod_State_Nb);
alphabet_modulation=pskmod([0:Mod_State_Nb-1],Mod_State_Nb);
case 'QAM'
symbols_s=qammod(data,Mod_State_Nb);
alphabet_modulation=qammod([0:Mod_State_Nb-1],Mod_State_Nb);
case 'PAM'
symbols_s=pammod(data,Mod_State_Nb);
alphabet_modulation=pammod([0:Mod_State_Nb-1],Mod_State_Nb);
end
%normalisation $E[|s|^2]=2$.
variance_signal=mean(abs(alphabet_modulation).^2);
symbols_s=symbols_s/sqrt(variance_signal);
%space-time encoding
[coded_signals]=space_time_coding(symbols_s,code_name,rate,num_code);
nt=size(coded_signals,1);
total_power_nt=trace((coded_signals*coded_signals')/(size(coded_signals,2)));
% channel matrix
H=sqrt(0.5)*(randn(nr,nt)+i*randn(nr,nt));
Y_without_noise=H*coded_signals;
%Additive noise
noise_variance=total_power_nt/(10^(SNR/10));
B=(sqrt(noise_variance/2))*(randn(nr,N)+i*randn(nr,N));
Y=Y_without_noise+B;
%% STBC Classification
fprintf('-- Blind recognition of the STBC --\n\n');
%Optimal Classifier (can be computational expensive)
fprintf('------- Optimal Classifier --------\n');
Optimal_Classifier(Y,H,Modulation,Mod_State_Nb,noise_variance,code_name_list,rate_list,num_code_list,1);
%SOS-STBC Classifier
fprintf('------- SOS-STBC Classifier -------\n');
SOS_STBC_Classifier(Y,H,noise_variance,code_name_list,rate_list,num_code_list,1);
%CP Classifier
fprintf('---------- CP Classifier ----------\n');
CP_Classifier(Y,code_name_list,rate_list,num_code_list,1);
|
|