clc
close all
clear all
addpath('functions');
R=1e4;% sphere radios
M=2; % MPSK symbols
N=10; % multiple symbol window size
Ns=(N-1)*round(1E5/(N-1));% number of symbols
% option for known statistics or unknown stats
stats_opt='known';
% number of basis functions in unknown stats
I=3;
EbN0_dB=0:2:40;% SNR range in dB
EbN0=10.^(EbN0_dB/10);
EsN0=log2(M)*EbN0;
%fD=100;% doppler frequency
fdTs=.03;% normalized doppler frequency
ch_dis=1;
% this loop scans the SNR range
for ind=1:length(EbN0)
ind
nbits=0;%bit counter
err_ms=0;% error counter
err_cdd=0;% error counter
err_coh=0;% error counter
err_dcoh=0;% error counter
clc
EbN0(ind)
% AWGN noise variance
N0=1/EsN0(ind);
% create and factorize C^-1 to find L Hermitian, Eq.2,3,4
Lh=computeL(N,fdTs,N0/2,stats_opt,I);
% this loop keeps going to get a certain amount of errors
ERR_TH=100;
while err_ms< ERR_TH %|| err_dcoh<100
% binary data,0/1
xb=bits(log2(M)*Ns);
% QPSK symbols
v=bin2mpsk(xb,M);
% DPSK modulation
s=dpsk(v);
Nd=length(s);
% correlated channel coefficients, Jakes model
h=flat_cos(Nd,fdTs,ch_dis);
% AWGN noise CN(0,N0)
n=cxn(Nd,N0);
% received signals
r=h.*s+n;% diff symbols
%r_coh=h(1:Ns).*v.'+n(1:Ns);%coherent
% multiple symbol sphere detection
for k=1:N-1:Nd-N+1
rN=r(k:k+N-1).';
U=conj(Lh*diag(rN));
shat=MSDSD(U,M,R);
vh_ms(k:k+N-2)=diff_detector(shat);
end
% conventional non-coherent detection
vh_cdd=diff_detector(r);
% binary detection
bh_cdd=mpsk2bin(vh_cdd,M);
bh_ms=mpsk2bin(vh_ms,M);
err_ms=err_ms+sum(abs(xb-bh_ms));
err_cdd=err_cdd+sum(abs(xb-bh_cdd));
nbits=log2(M)*Ns+nbits;%Ns is number of symbols
end
% compute practical BER
ber_ms(ind)=err_ms/nbits;% multiple symbol
ber_cdd(ind)=err_cdd/nbits;% conventional
end
% BER theory value from book "digital comm on fading channels" page 293&259
Pb_coh=.5*(1-sqrt(EbN0./(1+EbN0)));
roh=besselj(0,2*pi*fdTs);
if M==2
Pb_cdd=0.5*(1+EbN0*(1-roh))./(1+EbN0);
elseif M==4
Pb_cdd=.5*(1+EbN0*(1-roh))./(1+EbN0);% this is not exact!
end
for k=1:length(EsN0)
N0=1/EsN0(k);
Pb_ms(k)=ber_msd(M,N,N0,fdTs);
end
%% plot
% marker
mk=['r-s';'k-*';'g--';'b-o';'c--';'m--'];
semilogy(EbN0_dB,ber_ms,mk(1,:),'LineWidth',2,'MarkerSize',6);
hold on
semilogy(EbN0_dB,ber_cdd,mk(2,:),'LineWidth',2,'MarkerSize',6);
semilogy(EbN0_dB,Pb_cdd,mk(3,:),'LineWidth',2,'MarkerSize',6);
semilogy(EbN0_dB,Pb_ms,'b-','LineWidth',2,'MarkerSize',6);
grid on
xlabel('E_b/N_0,[dB]')
ylabel('Bit Error Rate')
leg1=['MSD ',stats_opt,', N=',num2str(N)];
legend(leg1,'Simulation CDD','Theory CDD','Theory MSDD');
set(gca,'XTick',EbN0_dB(1):5:EbN0_dB(end))
没有合适的资源?快使用搜索试试~ 我知道了~
多符号差分球形译码算法的matlab仿真.包含仿真操作录像
共16个文件
m:14个
jpg:1个
avi:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 128 浏览量
2022-04-10
20:23:55
上传
评论
收藏 2.7MB RAR 举报
温馨提示
1.版本:matlab2021a,包含仿真操作录像,操作录像使用windows media player播放。 2.领域:球形译码算法。 3.内容:多符号差分球形译码算法的的MATLAB仿真。 for k=1:N-1:Nd-N+1 rN=r(k:k+N-1).'; U=conj(Lh*diag(rN)); shat=MSDSD(U,M,R); vh_ms(k:k+N-2)=diff_detector(shat); end 4.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
资源推荐
资源详情
资源评论
收起资源包目录
多符号差分球形译码算法的matlab仿真.rar (16个子文件)
多符号差分球形译码
MAIN.m 3KB
functions
ber_msd.m 869B
diff_detector.m 68B
cheby.m 377B
computeL.m 456B
bits.m 77B
coh_detector.m 148B
dpsk.m 104B
cxn.m 76B
phi_poles.m 425B
mpsk2bin.m 285B
MSDSD.m 2KB
bin2mpsk.m 239B
flat_cos.m 598B
untitled.jpg 42KB
操作录像0042.avi 15.85MB
共 16 条
- 1
资源评论
fpga和matlab
- 粉丝: 17w+
- 资源: 2626
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【java毕业设计】校园拼车系统源码(ssm+mysql+说明文档).zip
- 【java毕业设计】杭商校园零食预约管理系统源码(ssm+mysql+说明文档).zip
- Java项目:学生成绩管理系统(基于Java+Springboot+Maven+MyBatis+Vue+Mysql)
- 【java毕业设计】高校普法系统源码(ssm+mysql+说明文档+LW).zip
- (源码)基于Spring Boot和Quartz的定时任务管理系统.zip
- dophon框架的数据库模块,支持mysql,sqlite数据库,带有orm持久化功能与链式操作实例,贴近逻辑习惯,支持mysq
- 【java毕业设计】电子资源管理系统源码(ssm+mysql+说明文档+LW).zip
- 【java毕业设计】电影网站源码(ssm+mysql+说明文档+LW).zip
- 168P-P55EXL-01.pdf
- web三层结构前端的页面文件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功