【通信仿真】基于matlab V-BLAST结构检测算法仿真【含Matlab源码 1683期】
【摘要】
一、获取代码方式(附实验题目说明)
获取代码方式1: 完整代码已上传我的资源:【通信仿真】基于matlab V-BLAST结构检测算法仿真【含Matlab源码 1683期】
获取代码方式2: 通过订阅...
一、获取代码方式(附实验题目说明)
获取代码方式1:
完整代码已上传我的资源:【通信仿真】基于matlab V-BLAST结构检测算法仿真【含Matlab源码 1683期】
获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。
备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);
二、部分源代码
%仿真V-BLAST结构ZF检测算法性能,调制方式为QPSK
clear
close all
Nt = 4; %发射天线数
Nr = 4; %接收天线数
N = 10; %每帧的长度
L = 10000; %仿真的总帧数
EbN0 = 0:2:20;
M = 4; %QPSK调制
x = randi([0,1],N*L,Nt); %信源数据
s = pskmod(x,M,pi/4); %QPSK调制
for index=1:length(EbN0)
s1 = [];
s2 = [];
s3 = [];
for index1 = 1:L
h = randn(Nt,Nr)+j*randn(Nt,Nr); %Rayleigh衰落信道
h = h./sqrt(2); %信道系数归一化
[q1,r1] = qr(h'); %信道QR分解
r = r1(1:Nt,:)'; %矩阵R
q = q1(:,1:Nt)'; %矩阵Q
sigma1 = sqrt(1/(10.^(EbN0(index)/10))); %每根接收天线的高斯白噪声标准差
n = sigma1*(randn(N,Nr)+j*randn(N,Nr)); %每根接收天线的高斯白噪声
y = s((index1-1)*N+1:index1*N,:)*h*q'+n*q'; %信号通过信道
y1 = y*inv(r); %无干扰消除时的ZF检测
s1 = [s1;pskdemod(y1,M,pi/4)];
%有干扰消除时的ZF检测
y(:,Nt) = y(:,Nt)./(r(Nt,Nt)); %检测第Nt层
y1(:,Nt) = pskdemod(y(:,Nt),M,pi/4); %解调第Nt层
y(:,Nt) = pskmod(y1(:,Nt),M,pi/4); %对第Nt层解调结果重新进行调制
y2 = y;
y3 = y1;
for jj=Nt-1:-1:1
for kk=jj+1:Nt
y(:,jj) = y(:,jj)-r(kk,jj).*y(:,kk); %非理想干扰消除
y2(:,jj) = y2(:,jj)-r(kk,jj).*s((index1-1)*N+1:index1*N,kk); %理想干扰消除
end
y(:,jj) = y(:,jj)./r(jj,jj);
y2(:,jj) = y2(:,jj)./r(jj,jj); %第jj层判决变量
y1(:,jj) = pskdemod(y(:,jj),M,pi/4); %第jj层进行解调
y3(:,jj) = pskdemod(y2(:,jj),M,pi/4);
y(:,jj) = pskmod(y1(:,jj),M,pi/4); %第jj解调结果重新进行调制
y2(:,jj) = pskmod(y3(:,jj),M,pi/4);
end
s2 = [s2;y1];
s3 = [s3;y3];
end
[temp,ber1(index)] = biterr(x,s1,log2(M)); %无干扰消除时的系统误码
[temp,ber2(index)] = biterr(x,s2,log2(M)); %非理想干扰消除时的系统误码
[temp,ber3(index)] = biterr(x,s3,log2(M)); %理想干扰消除时的系统误码
[temp,ber24(index)] = biterr(x(:,1),s2(:,1),log2(M)); %非理想干扰消除时第4层的系统误码
[temp,ber23(index)] = biterr(x(:,2),s2(:,2),log2(M)); %非理想干扰消除时第3层的系统误码
[temp,ber22(index)] = biterr(x(:,3),s2(:,3),log2(M)); %非理想干扰消除时第2层的系统误码
[temp,ber34(index)] = biterr(x(:,1),s3(:,1),log2(M)); %理想干扰消除时第4层的系统误码
[temp,ber33(index)] = biterr(x(:,2),s3(:,2),log2(M)); %理想干扰消除时第3层的系统误码
[temp,ber32(index)] = biterr(x(:,3),s3(:,3),log2(M)); %理想干扰消除时第2层的系统误码
[temp,ber31(index)] = biterr(x(:,4),s3(:,4),log2(M)); %理想干扰消除时第1层的系统误码
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/122658931
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)