clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
L_frame = 400; % 帧长度和帧个数
N_iter = 1000;
Nmod = 2;
M = 2^Nmod;
SNRs_dB = 0:2:20; %信噪比
SNRs = 10.^(SNRs_dB / 10.);
N_SNR = length(SNRs_dB);
T = 2; % Alamouti长度T
N_M = 2; % 列向量长度,码字长度
L_code = 64;% 码本长度
NT = 4; % 发射和接收天线个数
NR = 1;
N_frame_bit = NT*Nmod*L_frame; %一帧比特数
N_totoal_bit = N_frame_bit*N_iter;% 总比特数
code_book = CodebookGenerator(NT, N_M, L_code);%生成码本
y = zeros(2,1,L_frame);
Rx = zeros(1,2,L_frame);
BERs = zeros(2, N_SNR);
for isnr = 1:N_SNR
SNR = SNRs(isnr);
sigma = sqrt(NT/(2*SNR));
n_biterror = 0;
for iiter = 1:N_iter
[isnr,iiter]
frame_origin = randi([0,1], L_frame, Nmod*N_M); % 生成随机数
% 调制
frame_mod = QPSKMod(frame_origin,L_frame,N_M);
% Alamouti发送
frame_transmit = reshape(frame_mod, N_M, 1, L_frame);
frame_alamouti = [frame_transmit(1,1, :) -conj(frame_transmit(2,1, :));
frame_transmit(2,1, :) conj(frame_transmit(1,1, :))];
% 信道和噪声
Hiid = (randn(NR,NT)+1j*randn(NR,NT))/sqrt(2);
arg_W = zeros(1, L_code);
for ih = 1:L_code
arg_W(ih) = norm(Hiid*code_book(:,:,ih),'fro');
end
[arg_val, arg_Index] = max(arg_W);
HW = Hiid*code_book(:,:,arg_Index);
for iframe = 1:L_frame
Rx(:,:,iframe) = HW*frame_alamouti(:,:,iframe)+sigma*(randn(NR,T)+1j*randn(NR,T));
end
% 接收
HW_re = [conj(HW(1)) HW(2); conj(HW(2)) -HW(1)];
Rx_re = [Rx(1,1,:); conj(Rx(1,2,:))];
for iframe = 1:L_frame
y(:,:,iframe) = HW_re* Rx_re(:,:,iframe)./norm(HW)^2;
end
frame_re = reshape(y, L_frame, N_M);
frame_demod = QPSKDemod(frame_re,L_frame,N_M);
% 计算误码率
n_biterror_tmp = sum(sum(abs(frame_demod - frame_origin)));
n_biterror = n_biterror + n_biterror_tmp;
end
BERs(1, isnr) = n_biterror/(N_iter*L_frame*Nmod*N_M);
end
figure;
BERs2 = [0.345555000000000 0.245437500000000 0.151757500000000 0.0813550000000000 0.0365075000000000 0.0133750000000000 0.00412000000000000 0.00103500000000000 0.000242500000000000 5.00000000000000e-05 2.25000000000000e-05];
semilogy(SNRs_dB,BERs(1,:),"-^", SNRs_dB,BERs2,'-+');
axis([SNRs_dB([1 end]) 1e-6 1e0]);
xlabel('SNR[dB]'), ylabel('BER');
legend('Alamouti预编码','无Alamouti预编码');
没有合适的资源?快使用搜索试试~ 我知道了~
基于matlab的MIMO-OFDM系统Alamouti预编码对误码率的性能影响分析+代码仿真操作视频
共9个文件
m:8个
avi:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 84 浏览量
2022-07-12
05:47:10
上传
评论 6
收藏 273KB RAR 举报
温馨提示
1.领域:matlab,MIMO-OFDM系统 2.内容:基于matlab的MIMO-OFDM系统Alamouti预编码对误码率的性能影响分析+代码仿真操作视频 3.用处:用于Alamouti预编码算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab2021a或者更高版本测试,运行里面的Runme_.m文件,不要直接运行子函数文件。运行时注意matlab左侧的当前文件夹窗口必须是当前工程所在路径。 具体可观看提供的操作录像视频跟着操作。
资源推荐
资源详情
资源评论
收起资源包目录
基于matlab的MIMO-OFDM系统Alamouti预编码对误码率的性能影响分析.rar (9个子文件)
操作录像0030.avi 7.2MB
func
QPSKDemod.m 276B
Water_Pouring.m 686B
Modulator.m 1KB
WaterFilling.m 1KB
CodebookGenerator.m 870B
ModTH.m 133B
QPSKMod.m 540B
Runme.m 2KB
共 9 条
- 1
资源评论
- Robinnn12022-11-12发现一个宝藏资源,赶紧冲冲冲!支持大佬~
- weixin_455828142023-05-17资源是宝藏资源,实用也是真的实用,感谢大佬分享~
fpga和matlab
- 粉丝: 15w+
- 资源: 2546
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2022年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- Golang:通过Gin框架+Redis+责任链,实现一个简单的钉钉机器人,进行消息处理 ps:多应用版
- 2021年各城市PM2.5, PM10, SO2, NO2等环境空气质量数据
- CORRUPT.navicat150-premium-cs-x64.exe
- centos7 ssh 升级至 9.6p1
- DriverMax Pro .exe
- PHP端通过modbus协议跟第三方设备进行数据通信
- navicat安装包亲测可用
- 算法部署-使用OpenVINO部署MobileStyleGAN轻量化高保真图像合成算法-项目源码-优质项目实战.zip
- 基于java实现远程采集华为逆变器使用modbus tcp协议进行通讯的设备数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功