1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5uUk5ty
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
码分多址是指利用码序列相关性实现的多址通信 。码分多址的基本思想是靠不同的地址码来区分的地址。每个配有不同的地址码,用户所发射的载波(为同一载波)既受基带数字信号调制,又受地址码调制。
接收时,只有确知其配给地址码的接收机,才能解调出相应的基带信号,而其他接收机因地址码不同,无法解调出信号。划分是根据码型结构不同来实现和识别的。一般选择伪随机码(PN码)作地址码。由于PN码的码元宽度远小于PCM信号码元宽度(通常为整数倍),这就使得加了伪随机码的信号频谱远大于原基带信号的频谱,因此,码分多址也称为扩频多址 。
4.部分源码
..........................................................
Goldseqs = [GoldSeq1 GoldSeq2 GoldSeq3];
Gold_Num = length(GoldSeq1);
J = [zeros(1,(2*Gold_Num-1)) 0;eye(2*Gold_Num-1) zeros((2*Gold_Num-1),1)];
%调制初始参数
phi = pi/4;
%定义信噪比
SNR = -10;
%定义三个用户的信道信息,修改信道参数,即可完成task1,2,3的功能实现
%array
Array_Position = [-4 0 0;
-3 0 0;
1 0 0;
3 0 0;
4 0 0];
%每个用户的多径数,1表示无多径
Path_Num = [3 1 1]';
User_Num = length(Path_Num);
%DOA:azimuth, elevation
DOA_User1= [20 0;
25 0;
29 0];
DOA_User2= [70 0];
DOA_User3= [120 0];
DOA = [DOA_User1; DOA_User2; DOA_User3];
%Delay
Delay1 = [1 4 9]';
Delay2 = [8]';
Delay3 = [11]';
Delay = [Delay1; Delay2; Delay3];
%fading
fading1 = [1;
0.6*exp(-j*pi/6);
0.4*exp(j*pi/4)];
fading2 = [0.5]';
fading3 = [0.6]';
Beta = [fading1; fading2; fading3];
%每次发送64个bit,进行循环发送,模拟实际情况
for nframes = 1:P/databox
fprintf('Now transmit...%d\n\n',nframes);
bits1 = [0 0 bitsOut1(databox*(nframes-1)+1:databox*nframes) 0 0]';
bits2 = [0 0 bitsOut2(databox*(nframes-1)+1:databox*nframes) 0 0]';
bits3 = [0 0 bitsOut3(databox*(nframes-1)+1:databox*nframes) 0 0]';
%QPSK,根据星座图进行映射
QPSK1 =fDSQPSKModulator(bits1,Goldseqs(:,1),phi);
QPSK2 =fDSQPSKModulator(bits2,Goldseqs(:,2),phi);
QPSK3 =fDSQPSKModulator(bits3,Goldseqs(:,3),phi);
%扩频处理
All_Photo = [QPSK1 QPSK2 QPSK3];
%扩频,信道处理
R_Channel = fChannel(Path_Num,All_Photo, DOA, Delay, Beta, Goldseqs, Array_Position, SNR);
%信道估计
[DOAest,Delayest] = fChannelEstimation(R_Channel,GoldSeq1,Array_Position,Path_Num(1));
%接收机解扩
R = func_Reciver(R_Channel,DOAest,Delayest,Array_Position,GoldSeq1,Path_Num(1));
%De QPSK
DeQPSK = fDSQPSKDemodulator(R,GoldSeq1,phi);
%DeQPSK = Decoder(R, 'QPSK');
%最后接收到的数据
Final_Rec(databox*(nframes-1)+1:databox*nframes) = DeQPSK;
%传输错误个数
sum(abs(bits1(3:end-2)-DeQPSK'))
end
......................................
A159