📄 fig_stbc.m
字号:
%%%%%%%%%% Space Diversity Simulation based on <Introduction to %%%%%%%
%%%%%%%%%%%%%%% Space-Time wireless Communications> %%%%%%%%%%%%%%
clear
DataNum = 100000;
Mr = 2;
Mt = 2;
Es = 1;
%%%%%%%%%%%%%% Generating Data Symbol %%%%%%%%%%%%%
Data = sign(rand(DataNum,1)-0.5);
%%%%%%%%%%%%%%%%%%%%%% AWGN %%%%%%%%%%%%%%%%%%%%%%%
% M = 1
% for i = 1:8
% SNR(i) = (i-1)*2;
% Noise = sqrt(Es*10^(-SNR(i)/10))*(randn(DataNum,M)+j*randn(DataNum,M))/sqrt(2);
% for k = 1:DataNum
% z = sqrt(Es)*Data(k)+Noise(k);
% if (abs(z-1) <= abs(z+1))
% RecovData(k) = 1;
% else
% RecovData(k) = -1;
% end
% end
% BER(i) = length(find(Data ~= RecovData'))/DataNum;
% end
% semilogy(SNR,BER)
% grid on
%%%%%%%%%%%%%%% Rayleigh Channel No Diversity %%%%%%%%%%%%%%%%%%%%%%
% M = 1;
% for i = 1:8
% SNR(i) = (i-1)*2;
% Noise = sqrt(Es*10^(-SNR(i)/10))*(randn(DataNum,M)+j*randn(DataNum,M))/sqrt(2);
% for k = 1:DataNum
% h = (randn(1,1)+j*randn(1,1))/sqrt(2);
% y = sqrt(Es)*h*Data(k)+Noise(k);
% z = conj(h)*y;
% if (abs(z-1) <= abs(z+1))
% RecovData(k) = 1;
% else
% RecovData(k) = -1;
% end
% end
% BER(i) = length(find(Data ~= RecovData'))/DataNum;
% end
% semilogy(SNR,BER)
% grid on
%%%%%%%%%%%%%% Repeating Coding Scheme %%%%%%%%%%%%
% M = 1;
% for i = 1:8
% SNR(i) = (i-1)*2;
% Noise = sqrt(Es*10^(-SNR(i)/10))*(randn(DataNum,M)+j*randn(DataNum,M))/sqrt(2);
% for k = 1:DataNum
% h = (randn(M,1)+j*randn(M,1))/sqrt(2);
% y = sqrt(Es/M)*h*Data(k)+Noise(k,:)';
% z = h'*y;
% if (abs(z-1) <= abs(z+1))
% RecovData(k) = 1;
% else
% RecovData(k) = -1;
% end
% end
% BER(i) = length(find(Data ~= RecovData'))/DataNum;
% end
% semilogy(SNR,BER)
% grid on
%%%%%%%%%%%%% Receive Antenna Diversity %%%%%%%%%%%%%
% for i = 1:8
% SNR(i) = (i-1)*2;
% Noise = sqrt(Es*10^(-SNR(i)/10))*(randn(DataNum,Mr)+j*randn(DataNum,Mr))/sqrt(2);
% for k = 1:DataNum
% h = (randn(Mr,1)+j*randn(Mr,1))/sqrt(2);
% y = sqrt(Es)*h*Data(k)+Noise(k,:)';
% z = h'*y;
% if (abs(z-1) <= abs(z+1))
% RecovData(k) = 1;
% else
% RecovData(k) = -1;
% end
% end
% BER(i) = length(find(Data ~= RecovData'))/DataNum;
% end
% semilogy(SNR,BER)
% grid on
%%%%%%% Transmit Diversity: channel unknown to the transmitter (MISO) %%%%%
% for i = 1:8
% SNR(i) = (i-1)*2;
% Noise = sqrt(Es*10^(-SNR(i)/10))*(randn(DataNum,1)+j*randn(DataNum,1))/sqrt(2);
% for k = 1:DataNum/2
% h = (randn(Mt,1)+j*randn(Mt,1))/sqrt(2);
% y = sqrt(Es/2)*[h(1) h(2);conj(h(2)) -conj(h(1))]*Data((k-1)*2+1:k*2)+Noise((k-1)*2+1:k*2);
% z = sqrt(Es/2)*norm(h,'fro')^2*Data((k-1)*2+1:k*2)+[h(1) h(2);conj(h(2)) -conj(h(1))]'*Noise((k-1)*2+1:k*2);
% if (abs(z(1)-1) < abs(z(1)+1))
% RecovData((k-1)*2+1) = 1;
% else
% RecovData((k-1)*2+1) = -1;
% end
% if (abs(z(2)-1) < abs(z(2)+1))
% RecovData(k*2) = 1;
% else
% RecovData(k*2) = -1;
% end
% end
% BER(i) = length(find(Data ~= RecovData'))/DataNum;
% end
% semilogy(SNR,BER)
% grid on
%%%%%%% Transmit Diversity: channel known to the transimitter (MISO) %%%%%%
for i = 1:8
SNR(i) = (i-1)*2;
Noise = sqrt(Es*10^(-SNR(i)/10))*(randn(DataNum,1)+j*randn(DataNum,1))/sqrt(2);
for k = 1:DataNum
h = (randn(Mt,1)+j*randn(Mt,1))/sqrt(2);
w = sqrt(Mt)*h'/norm(h,'fro');
y = sqrt(Es/Mt)*h'*w'*Data(k)+Noise(k);
if (abs(y-1) < abs(y+1))
RecovData(k) = 1;
else
RecovData(k) = -1;
end
end
BER(i) = length(find(Data ~= RecovData'))/DataNum;
end
semilogy(SNR,BER)
grid on
%%%%%%%% MIMO: channel unknown to the transmitter (Alamouti) %%%%%%%%%%
for i = 1:8
SNR(i) = (i-1)*2;
Noise = sqrt(Es*10^(-SNR(i)/10))*(randn(DataNum,1)+j*randn(DataNum,1))/sqrt(2);
for k = 1:DataNum
h = (randn(Mt,1)+j*randn(Mt,1))/sqrt(2);
w = sqrt(Mt)*h'/norm(h,'fro');
y = sqrt(Es/Mt)*h'*w'*Data(k)+Noise(k);
if (abs(y-1) < abs(y+1))
RecovData(k) = 1;
else
RecovData(k) = -1;
end
end
BER(i) = length(find(Data ~= RecovData'))/DataNum;
end
FONTSIZE=0.315; % 单位为厘米;
LINEWIDTH_AXES=1.2;%140/42; % corresponding to 0.140mm
LINEWIDTH_WAVE=0.5;%180/42; % corresponding to 0.180mm
figNumber=figure('Name',' ', 'Visible','on');
set(gcf,'Color','white');
semilogy(SNR,BER,'red','LineWidth',LINEWIDTH_WAVE);
grid on
xlabel('SNR (dB)','FontUnits','centimeters','FontName','Times New Roman','FontSize',FONTSIZE);
ylabel('SER','FontUnits','centimeters','FontName','Times New Roman','FontSize',FONTSIZE);
set(gca,'XColor','blue','YColor','blue','FontUnits','centimeters','FontName','Times New Roman','FontSize',FONTSIZE,'LineWidth',LINEWIDTH_AXES);
set(figNumber,'PaperPosition',[0.634518 6.34518 20.3046*0.8 15.2284*0.8]); Shrink the figure size
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -