%function PNCode=Code()
%生成31位m序列
%设置码片速率100bpsk
%码片速率1/Tc=3100cps
%fb=12400hz
% %fs=fb*16
a=[1,1,1,1,1];
m=[0,0,1,0,1];
PNCode=[];
for i=1:31
R=mod(sum(a.*m),2);
PNCode=[PNCode,a(5)];
a=[R,a(1:4)];
end
N=10;
%function signal=signalsource(N)
%signal=signalsource()
%函数输出signal为欲传输的01比特流
%函数输入N为生成的01比特流的个数
signal=rand(1,N)>0.5;%生成个数为N的01比特流
signal_spreading =[];
PNCode_spreading =[];
for i=1:length(signal)
for j=1:31
signal_spreading=[signal_spreading,signal(i)];
end
PNCode_spreading=[PNCode_spreading,PNCode];
end
signal2=signal_spreading.*PNCode_spreading;
fb=1240; %bit速率12400hz
fc=1240*3; %载波频率fc=250*1000
%function signal_bpsk=bpsk(signal2,fb,fc)
%bpsk函数实现信号的bpsk调制
%signal2
%fb为调制信号的比特速率
%fc为载波信号的速率
%t=linspace(0,1/fc,64);
t=1/(fc*16):1/(fc*16):1/fc; %时间轴t,每个周期抽样点数16
carrier1=[];
carrier2=[];
for i=1:(fc/fb); %fc/fb每个bit包含的载波周期
carrier1=[carrier1,cos(2*pi*fc*t)];
carrier2=[carrier2,cos(2*pi*fc*t-pi)];
end
figure(1);
subplot(2,1,1);
plot(carrier1);
grid on;
subplot(2,1,2);
plot(carrier2);
grid on;
signal_bpsk=[];
for i=1:length(signal2)
if signal2(i)==1
signal_bpsk=[signal_bpsk,carrier1];
else
signal_bpsk=[signal_bpsk,carrier2];
end
end
figure(2);
subplot(2,1,1);
plot(signal_bpsk);
title('signal_ bpsk');
grid on;
axis([0,100,-1,1]);
%function transmitted=channel(signal_bpsk,snr)
%加噪声
transmitted=awgn(signal_bpsk,20);
subplot(2,1,2);
plot(transmitted);
grid on;
axis([0,100,-1,1]);
title('signal_ awgn')
%function
%解扩
PNCode_spreading=[];
for i=1:31 %length(PNCode)=31
for j=1:16*fc/fb %每个载波周期抽样点数为16
PNCode_spreading=[PNCode_spreading,PNCode(i)]; %将PNCode数组中的每个元素扩展为每个bit包含的载波周期的长度,即16*fc/fb
end
end
PNCode_spread=[];
for i=1:N
PNCode_spread=[PNCode_spread,PNCode_spreading];
end
%将扩展之后的PNCode_spreading变为双极性码
for i=1:length(PNCode_spread)
if PNCode_spread(i)==0
PNCode_spread(i)=-1;
end
end
signal3=PNCode_spread.*transmitted;
figure(3);
subplot(2,1,1);
plot(signal3);
grid on;
axis([0,200,-1,1]);
title('与PNcode进行相异或后的信号');
%带通滤波
load Bandpass;
den=1;
signal4=filter(BandNum,den,signal3);
subplot(2,1,2);
plot(signal4);
grid on;
axis([0,100,-1,1]);
title('signal_ reverseSpread');
%function
%解调
carrier=[];
for i=1:length(signal4)/length(carrier1)
carrier=[carrier,carrier1];
end
x=signal4.*carrier;
figure(4);
subplot(2,1,1);
plot(x);
grid on;
axis([100,200,-1,1]);
%低通滤波器
load Lowpass;
den=1;
signal_demo=filter(LowNum,den,x);
subplot(2,1,2);
plot(signal_demo);
%axis([100,200,-1,1]);
grid on;
signal_demodulation=[];
for i=(16*3/2):(16*3):(length(signal_demo)-8)
if signal_demo(i)>0
signal_demodulation=[signal_demodulation,1];
else
signal_demodulation=[signal_demodulation,0];
end
end
%function
signal_reverse=[];
i=1;
for j=16:31:31*N
signal_reverse(i)=signal_demodulation(j);
i=i+1;
end
matlab_扩频通信系统仿真_频谱扩展_伪随机序列编码调制
版权申诉
5星 · 超过95%的资源 23 浏览量
2022-06-18
23:14:45
上传
评论 2
收藏 8KB ZIP 举报
wouderw
- 粉丝: 271
- 资源: 2960
最新资源
- 三菱plc编程口通信学习笔记.doc
- 与HIS接口解决方案...doc
- 专利技术交底书-案例模板-软件类-样板示例.doc
- C# 超简单的人脸识别库 .zip
- 实现人脸识别资源代码.zip
- 东北大学-微机原理实验报告及答案-8255并行接口.doc
- 实现人脸检测,人脸识别,人脸标记68个坐标点 人脸对齐 人脸特征测试等 同时可以自行训练人脸识别库.zip
- 基于中科视拓 seetaface6基础源码和JNI源码编译而来的项目.zip
- Python基于opencv人脸识别的考勤系统源码+代码说明(毕业设计).zip
- ML Kit是一个强大易用的工具包 通过ML Kit您可以很轻松的实现.图像标记、人脸检测、对象检测等功能.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈