📄 sosttc2state.m
字号:
Nt=2;%发射天线数为2
Nr=1;%接收天线数为1
min_snr=10;
max_snr=10;%最大的信噪设定
interval=2; % snr的间隔
symbol_per_frame=65;%每一帧的符号数
ave_power=2.0;
times=1;
kkk=1;
tot_err_bit=zeros(1,(max_snr-min_snr)/2+1);
S(1,:,:)=[-1,-1;1 1;];
S(2,:,:)=[-1,1;1 -1;];
mapping=[0, 1;];
for i=1:2,
state=mapping(i);
for k=1:2,
x2= mapping(k);
if [state x2]==[0 0]
table(i, k, :)=[1, 1]; % [S状态 旋转角度]
elseif [state x2]==[0 1]
table(i, k, :)=[2,-1];
elseif [state x2]==[1 0]
table(i, k, :)=[2, 1];
elseif [state x2]==[1 1]
table(i, k, :)=[1, -1];
end;
end;
end;
for snr=min_snr:interval:max_snr
display(snr);
sigma =sqrt(ave_power/(2*10^(snr/10)));
error_number=0;
for repeat=1:times
% Generate random data
x1=randint(1,symbol_per_frame,4);
x2=randint(1,symbol_per_frame,4);
x2(symbol_per_frame)=0;
H=RayleighCH(Nr,Nt); %生成具有瑞利分布特性的信道衰落系数
[codeword,sita]=encoding(symbol_per_frame, x1, x2);
% BPSK mapping
[symb1, symb2]=BPSKmapping(symbol_per_frame, codeword);
% Space-Time transmitting
for i=1:symbol_per_frame,
p=exp(j*sita(i));
C=[p*symb1(i) -p*conj(symb2(i)); symb2(i) conj(symb1(i));];
r(i,:)=H*C+sigma*(randn(Nr,Nt)+j*randn(Nr,Nt));
end;
%path matric
[state]=vtb_decoding(symbol_per_frame,H, r,table);
%ML decoding
x=1;
for i=symbol_per_frame:-1:1,
decoding_x1(i)=state(i, x, 2);
decoding_x2(i)=state(i, x, 4);
x=state(i, x, 1);
end;
% FER( ofdm symbol error ratio ) calculation
if (sum(abs(decoding_x1-x1))+sum(abs(decoding_x2-x2)))~=0
error_number=error_number+1;
end;
end; %for repeat
FER(kkk)=error_number/(times);
display(FER(kkk));
kkk=kkk+1;
end; %for SNR_in_dB
title('space-time trellis codes');
ylabel('FER (Frame error ratio)');
semilogy(min_snr:interval:max_snr, FER);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -