alamouti matlab,关于Alamouti编码,一些地方看不懂,求解释

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

% Alamouti_scheme.m

clear; clf;

L_frame=130; N_Packets=4000; % Number of frames/packet and Number of packets

NT=2; NR=1; b=2;

SNRdBs=[0:5:30]; sq_NT=sqrt(NT); sq2=sqrt(2); %信噪比最大到30dB

for i_SNR=1:length(SNRdBs)

SNRdB=SNRdBs(i_SNR); sigma=sqrt(0.5/(10^(SNRdB/10)));

for i_packet=1:N_Packets

msg_symbol=randint(L_frame*b,NT);

tx_bits=msg_symbol.'; tmp=[]; tmp1=[];

for i=1:NT

[tmp1,sym_tab,P] = modulator(tx_bits(i,:),b); tmp=[tmp; tmp1]; %temp是调制后的信号序列 ,也就是准备发送符号的长度

end

X=tmp.';

X1=X; X2=[-conj(X(:,2)) conj(X(:,1))]; % 看不懂??

for n=1:NT

Hr(n,:,:)=(randn(L_frame,NT)+j*randn(L_frame,NT))/sq2; %看不懂???

end

H=reshape(Hr(n,:,:),L_frame,NT); Habs(:,n)=sum(abs(H).^2,2); %看不懂??

R1 = sum(H.*X1,2)/sq_NT + sigma*(randn(L_frame,1)+j*randn(L_frame,1)); %接收信号 ,每个接收机接收信号

R2 = sum(H.*X2,2)/sq_NT + sigma*(randn(L_frame,1)+j*randn(L_frame,1)); %接收信号

Z1 = R1.*conj(H(:,1)) + conj(R2).*H(:,2); %最大似然译码

Z2 = R1.*conj(H(:,2)) - conj(R2).*H(:,1); %最大似然译码

for m=1:P ??看不懂??

tmp = (-1+sum(Habs,2))*abs(sym_tab(m))^2;

d1(:,m) = abs(sum(Z1,2)-sym_tab(m)).^2 + tmp;

d2(:,m) = abs(sum(Z2,2)-sym_tab(m)).^2 + tmp;

end

[y1,i1]=min(d1,[],2); S1d=sym_tab(i1).'; clear d1 %看不懂

[y2,i2]=min(d2,[],2); S2d=sym_tab(i2).'; clear d2 %看不懂

Xd = [S1d S2d]; tmp1=X>0; tmp2=Xd>0;

noeb_p(i_packet) = sum(sum(tmp1~=tmp2));% for coded

end % End of FOR loop for i_packet

BER(i_SNR) = sum(noeb_p)/(N_Packets*L_frame*b);

end % End of FOR loop for i_SNR

semilogy(SNRdBs,BER), axis([SNRdBs([1 end]) 1e-6 1e0]);

grid on; xlabel('SNR[dB]'); ylabel('BER'); hold on

求大神解释一下,有偿解释也行,谢谢了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值