% Alamouti_2x1_precoding.m
%MIMO-OFDM Wireless Communications with MATLAB�� Yong Soo Cho, Jaekwon Kim, Won Young Yang and Chung G. Kang
%2010 John Wiley & Sons (Asia) Pte Ltd
clear all; clf
%%%%%% Parameter Setting %%%%%%%%%
N_frame=1000; N_packet=100;
b=2; M=2^b;
mod_obj=modem.qammod('M',M,'SymbolOrder','Gray','InputType','bit');
demod_obj = modem.qamdemod(mod_obj);
% MIMO Parameters
T_TX=4; code_length=64;
NT=2; NR=1; % Numbers of transmit/receive antennas
N_pbits=NT*b*N_frame; N_tbits=N_pbits*N_packet;
code_book = codebook_gen;
fprintf('====================================================\n');
fprintf(' Precoding transmission');
fprintf('\n %d x %d MIMO\n %d QAM', NT,NR,M);
fprintf('\n Simulation bits : %d', N_tbits);
fprintf('\n====================================================\n');
SNRdBs = [0:2:10]; sq2=sqrt(2);
for i_SNR=1:length(SNRdBs)
SNRdB = SNRdBs(i_SNR);
noise_var = NT*0.5*10^(-SNRdB/10); sigma = sqrt(noise_var);
rand('seed',1); randn('seed',1); N_ebits=0;
for i_packet=1:N_packet
msg_bit = randint(N_pbits,1); % Bit generation
%%%%%%%%%%%%% Transmitter %%%%%%%%%%%%%%%%%%
s = modulate(mod_obj,msg_bit);
Scale = modnorm(s,'avpow',1); % Normalization
S = reshape(Scale*s,NT,1,N_frame); % Transmit symbol
Tx_symbol = [S(1,1,:) -conj(S(2,1,:)); S(2,1,:) conj(S(1,1,:))];
%%%%%%%%%%%%% Channel and Noise %%%%%%%%%%%%%
H = (randn(NR,T_TX)+j*randn(NR,T_TX))/sq2;
for i=1:code_length
cal(i) = norm(H*code_book(:,:,i),'fro');
end
[val,Index] = max(cal);
He = H*code_book(:,:,Index);
norm_H2 = norm(He)^2; % H selected and its norm2
for i=1:N_frame
Rx(:,:,i) = He*Tx_symbol(:,:,i)+sigma*(randn(NR,2)+j*randn(NR,2));
end
%%%%%%%%%%%%% Receiver %%%%%%%%%%%%%%%%%%
for i=1:N_frame
y(1,i) = (He(1)'*Rx(:,1,i)+He(2)*Rx(:,2,i)')/norm_H2;
y(2,i) = (He(2)'*Rx(:,1,i)-He(1)*Rx(:,2,i)')/norm_H2;
end
S_hat = reshape(y/Scale,NT*N_frame,1);
msg_hat = demodulate(demod_obj,S_hat);
N_ebits = N_ebits + sum(msg_hat~=msg_bit);
end
BER(i_SNR) = N_ebits/N_tbits;
end
semilogy(SNRdBs,BER,'-k^', 'LineWidth',2); hold on; grid on;
xlabel('SNR[dB]'), ylabel('BER'); legend('Precoded Alamouti');
没有合适的资源?快使用搜索试试~ 我知道了~
MATLAB实现码本生成和预编码.zip
共2个文件
m:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 79 浏览量
2023-04-14
13:04:14
上传
评论
收藏 2KB ZIP 举报
温馨提示
MATLAB实现无线通信实战。 项目代码可直接编译运行~
资源推荐
资源详情
资源评论
收起资源包目录
MATLAB实现码本生成和预编码.zip (2个子文件)
MATLAB实现码本生成和预编码
Alamouti_2x1_precoding.m 2KB
codebook_generator.m 577B
共 2 条
- 1
资源评论
不脱发的程序猿
- 粉丝: 24w+
- 资源: 5777
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功