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

📄 alamouti.txt

📁 详细的空时分组码程序
💻 TXT
字号:
function ber_ml=Alamouti(snr,soglia);

%clc;

S_ML=zeros(1,4);
X_dec=zeros(1,2);
Nt=2;
Nr=2;
dec=zeros(1,2);
no_bit_sym=1;
no_it_x_SNR=10000;

%soglia=1;

%length=1; %Numero di simulazioni
%snr=30;

iter=0;
err = 0;
tot_err_h = 0;
tot_err_ml = 0;

while tot_err_ml<soglia

iter=iter+1;

for i=1:no_it_x_SNR

Data=(2*round(rand(Nt,1))-1)/(sqrt(Nt));

%Creiamo il canale

H=rey(2,2);
%H=ones(2,2);
sig = sqrt(0.5/(10^(snr/10))); %Varianza del rumore 

n = sig * (randn(Nr,Nt) + j*randn(Nr,Nt)); %Rumore

%Encoder. Creiamo la matrice X

X=[Data(1) -conj(Data(2)); Data(2) conj(Data(1))]; %Coded data

R=H*X + n ; %Matrice ricevuta

%Combiner

s0=conj(H(1,1))*R(1,1)+H(1,2)*conj(R(1,2))+conj(H(2,1))*R(2,1)+H(2,2)*conj(R(2,2)); 
s1=conj(H(1,2))*R(1,1)-H(1,1)*conj(R(1,2))+conj(H(2,2))*R(2,1)-H(2,1)*conj(R(2,2));

%S = kron(R,ones(1,2^(2*no_bit_sym)));
S=[s0 s1];


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% Decodifica %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


dh = sqrt(2)*[1 -1]/2;

%Calcolo delle distanze del primo simbolo%

d11=((dh(1)-real(S(1)))^2+(imag(S(1)))^2);
d12=((dh(2)-real(S(1)))^2+(imag(S(1)))^2);


%end 

D1=[d11 d12]; %Distanze del simbolo ricevuto


%Costruzione del vettore delle scelte del primo simbolo%

for k=1:2

X1_dec(k)=((abs(dh(k)))^2)*sum(sum((abs(H)).^2)-1)+D1(k); 

end

%Calcolo delle distanze del secondo simbolo%

d21=((dh(1)-real(S(2)))^2+(imag(S(2)))^2);
d22=((dh(2)-real(S(2)))^2+(imag(S(2)))^2);

D2=[d21 d22];

%Costruzione del vettore delle scelte del secondo simbolo%

for x=1:2

X2_dec(x)=((abs(dh(k)))^2)*sum(sum((abs(H)).^2)-1)+D2(x);

end

%Decisioni. Si prende il valore minore%

[scelta1, posizione1]=min(X1_dec);
[scelta2, posizione2]=min(X2_dec);

decoded=[dh(posizione1) dh(posizione2)];

err_ml = sum(round(Data')~=round(decoded));

tot_err_ml = err_ml + tot_err_ml;

end

end

ber_ml=tot_err_ml/(no_it_x_SNR*iter*2)

end









⌨️ 快捷键说明

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