#### shakeel006

##### Junior Member level 3

i am new to space time coding .the following is 1 Tx and 2 RX code for space time block code.i need very clear and easy explanation of the following code.like what is meaning of frame length and packet size for 1 Tx and 2 RX code

%SNR upto 20 dBs

EbNo=[0:2:20];

%N, M: number of transmit and receive antennas

N=no_tx_antennas;

M=no_rx_antennas;

%initialize count

idx = 1;

h=waitbar(0,'Percentage Completed');

set(h,'Position',[230 60 275.25 56.25]);

set(h,'name','Please wait...');

wb=9.09;

for SNR=EbNo

sigma=0.5/(10^(SNR/10));

% Num -> number of packets

for packet_count=1:Num

% we are interested in transmitting 'K' SYMBOLS not bits. Hence, K*2 for QPSK

% etc.

switch (modulation)

case 'BPSK '

data=randint(K,N);

BIT=1;

case 'QPSK '

data=randint(K*2,N);

BIT=2;

case '8PSK '

data=randint(K*3,N);

BIT=3;

case '16QAM'

data=randint(K*4,N);

BIT=4;

otherwise

disp('No Modulation')

end

tx_bits=data.';

[temp s P]=tx_modulate(tx_bits,modulation);

%ready to transmit symbols of length 'K'

X=temp.';

fr_length=length(X);

% MRC

x0=X;

% form the channel matrix

if channel_model=='AWGN '

Hr=ones(fr_length,M);

else

Hr=(randn(fr_length,M)+j*randn(fr_length,M))/sqrt(2);

end

%transmission matrix

H=reshape(Hr,fr_length,M);

Habs=sum(abs(H).^2,2);

%received signal per receiver antenna

r1=sum(H,1).*x0,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1));

r2=sum(H,2).*x0,2)/sqrt(N)+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1));

% demodulate the received signals

z1=r1.*conj(H,1))+r2.*conj(H,2));

%uncoded(1,1)

r01=H,1).*x0+sqrt(sigma)*(randn(fr_length,1)+j*randn(fr_length,1));

%form estimates

for m=1

d01,m)=abs(r01-H,1)*s(m)).^2; %uncoded signal

%coded signals

d1,m)=abs(sum(z1,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2;

end

% determine the minimum of estimates

%decision for detecting uncoded

[y0,i0]=min((d01),[],2);

s0d=s(i0).';

clear d01

%decision for detecting s1

[y1,i1]=min((d1),[],2);

s1d=s(i1).';

clear d1

% form received symbols

Xd=[s1d];

%determine symbol errors

error_un(packet_count)=sum(X,1)~=s0d);% for uncoded

temp1=X>0;

temp2=Xd>0;

error(packet_count)=sum(sum(temp1~=temp2));% for coded

end% end of FOR loop for "packet_count"

%calculate FER, SER and BER for current idx

%for uncoded signal

SER_uncoded(idx)=sum(error_un)/(Num*K);

BER_uncoded(idx)=SER_uncoded(idx)/BIT;

FER_uncoded(idx)=SER_uncoded(idx)*K;

%for coded signal

SER(idx)=sum(error)/(Num*K);

BER(idx)=SER(idx)/BIT;

FER(idx)=SER(idx)*K;

%increment idx

idx=idx + 1;

str_bar=[num2str(wb) '% Completed'];

waitbar(wb/100,h,str_bar);

wb=wb+9.09;

end% end of FOR loop for SNR

close(h);

Best Regard

Shakeel