clear, clc, close all
% 0 产生扩频码 I支路为kasami码,Q支路为GOLD码
I_Chip = kasami(1);% I_Chip。I支路扩频序列
I_Chip = I_Chip(1,:);
Q_Chip = gold(1);% Q_Chip。Q支路扩频序列
Q_Chip = Q_Chip(1,:);
SNR = -18;%计算公式dB = 20lg(S/N) 当噪声超过信号功率1/10时,这个分贝就为负数了。
NumBit = 10;
SynOffset = 0; % SynOffset用来模拟扩频码不同步的情况,SynOffset = 0,表示已同步。
BER_Total = [];
% 在不同SNR下进行仿真
for SNR = -15:-1:-20
% 在同一个SNR下仿真3次
for SimuTimes = 1:3
% 1 产生帧信息
DataFrame = randn(2,500); %randn 产生正态分布随机数;DataFrame。2x500信息帧矩阵。
DataFrame(DataFrame <= 0) = -1;
DataFrame(DataFrame > 0) = 1;
% 2 扩频
DSFrame = BD_DSSS(DataFrame, I_Chip, Q_Chip);
DsStream = DSFrame(1,1:NumBit * 255);
% 3 信道干扰
for n = 1:NumBit * 255 % 产生的随机干扰不相关
noise(1,n) = randn;
end
RecStream = DsStream + 10^(-1 * SNR / 20) * noise;% RecStream为接收到的信号
% 4 解扩
for i = 1:(NumBit - 1)
tempRecFrame=RecStream - 10^(-1 * SNR / 20) * noise;
tempRecFrame1 = RecStream(((i - 1) * 255 + 1 + SynOffset):i * 255 + SynOffset);
RecBit(i) = sum(tempRecFrame1 * I_Chip');
end
% 5 误码率
RecBit(RecBit <= 0) = -1;
RecBit(RecBit > 0) = 1;
TxBit = DataFrame(1,1:NumBit - 1);
BER(SimuTimes) = 0.5 * sum(abs(TxBit - RecBit))/NumBit
% Offset(SynOffset + 1) = SynOffset
% 6 对特定 SynOffset 画图显示结果
if ((SynOffset == 0) && (SimuTimes == 1))
subplot(2,2,1)
plot(DsStream(1:1000))
axis([1 250 -50 50]);
xlabel('信息速率(b/s)')
ylabel('波幅')
title('原始信号')
for i = 1:(NumBit - 2)*255
tempRecFrame2 = RecStream(i + SynOffset:i + 254 + SynOffset);
StepCorr(i) = sum(tempRecFrame2 * I_Chip');
end
subplot(2,2,2)
plot(RecStream(1:1000))
axis([1 250 -50 50]);
hold on
plot(DsStream(1:1000),'r.')
xlabel('信息速率(b/s)')
ylabel('波幅')
title('进行信道干扰');
subplot(2,2,3)
plot(StepCorr)
axis([0 250 -1000 1000]);
hold on
subplot(2,2,3)
plot([(0:NumBit - 3)*255 + 1],StepCorr((0:NumBit - 3)*255 + 1), 'rd');
xlabel('信息速率(b/s)')
ylabel('波幅')
title('扩频后的信号');
pause(3)
end
end
subplot(2,2,4)
plot(1:SimuTimes, BER,'r.')
xlabel('仿真次数')
ylabel('误码率')
title('误码率跟踪统计');
hold on
pause(3)
SNR = SNR
BER_Total = [BER_Total mean(BER,2)]%误码率统计
end
figure
plot(RecStream)
axis([1 250 -50 50]);
xlabel('信息速率(b/s)')
ylabel('波幅')
title('接收到的信号');
figure
plot(tempRecFrame)
axis([1 250 -50 50]);
xlabel('信息速率(b/s)')
ylabel('波幅')
title('解扩后输出的信号');
SNR = -15:-1:-20
figure
plot(SNR, BER_Total,'r')
xlabel('信噪比(dB)')
ylabel('误码率')
title('误码率统计');
figure
subplot(2,1,1)
plot(DsStream(1:1000))
axis([1 250 -50 50]);
subplot(2,1,2)
plot(tempRecFrame)
axis([1 250 -50 50]);
xlabel('信息速率(b/s)')
ylabel('波幅')
title('输入信号与输出信号的对比');
ammmooo
- 粉丝: 17
- 资源: 7
最新资源
- 电影购票系统-Java Web项目
- SPD-Conv-main.zip
- 使用Python和Pygame库创建新年烟花动画效果
- chapter9.zip
- 安居客Python爬虫代码.zip
- 企业可持续发展性数据集,ESG数据集,公司可持续发展性数据(可用于多种企业可持续性研究场景)
- 车辆轨迹自适应预瞄跟踪控制和自适应p反馈联合控制,自适应预苗模型和基于模糊p控制均在simulink中搭建 个人觉得跟踪效果相比模糊pid效果好很多,轨迹跟踪过程,转角控制平滑自然,车速在36到72
- 数据分析-49-客户细分-K-Means聚类分析
- TIA PORTAL V18 UPD5更新包(2024.10最新)-链接地址.txt
- 使用Python和Pygame实现圣诞节动画效果
- 自动驾驶不同工况避障模型(perscan、simulink、carsim联仿),能够避开预设的(静态)障碍物
- 100个情侣头像,唯美手绘情侣头像
- 国际象棋检测10-YOLO(v5至v9)、COCO、CreateML、Paligemma数据集合集.rar
- 2024~2025(1)Oracle数据库技术A卷-22软单、软嵌.doc
- 睡眠健康与生活方式数据集,睡眠和生活习惯关联分析(睡眠影响因素)
- 浪漫节日代码 - 爱心代码、圣诞树代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈