基于CDMA全功能短信和图片发送,包括多用户,信道估计等

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

      码分多址是指利用码序列相关性实现的多址通信 。码分多址的基本思想是靠不同的地址码来区分的地址。每个配有不同的地址码,用户所发射的载波(为同一载波)既受基带数字信号调制,又受地址码调制。
       接收时,只有确知其配给地址码的接收机,才能解调出相应的基带信号,而其他接收机因地址码不同,无法解调出信号。划分是根据码型结构不同来实现和识别的。一般选择伪随机码(PN码)作地址码。由于PN码的码元宽度远小于PCM信号码元宽度(通常为整数倍),这就使得加了伪随机码的信号频谱远大于原基带信号的频谱,因此,码分多址也称为扩频多址 。

       码分多址是指以不同的伪随机码来区别基站。各基站使用同一频率并在同一时间进行信息传输的技术。由于发送信号时叠加了伪随机码。使信号的频谱大大加宽。采用这种技术的通信系统也称为扩频通信系统。它是近年来在数字移动通信进程中出现的一种先进的无线扩频通信技术。能够满足市场对移动通信容量和品质的高要求。具有频谱利用率高。话音质量好、保密性强、掉话率低、电磁辐射小、容量大、覆盖广等特点。
        码分多址是各发送端用各不相同的、相互正交的地址码调制其所发送的信号。在接收端利用码型的正交性,通过地址识别(相关检测),从混合信号中选出相应的信号。码分多址是指以不同的伪随机码来区别基站。各基站使用同一频率并在同一时间进行信息传输的技术。

       由于发送信号时叠加了伪随机码。使信号的频谱大大加宽。采用这种技术的通信系统也称为扩频通信系统。它是近年来在数字移动通信进程中出现的一种先进的无线扩频通信技术。能够满足市场对移动通信容量和品质的高要求。具有频谱利用率高。话音质量好、保密性强、掉话率低、电磁辐射小、容量大、覆盖广等特点。

       码分多址是各发送端用各不相同的、相互正交的地址码调制其所发送的信号。在接收端利用码型的正交性,通过地址识别(相关检测),从混合信号中选出相应的信号。 

       码分多址的特点是:网内所有用户使用同一载波、占用相同的带宽、各个用户可以同时发送或接收信号。

       码分多址通信系统中各用户发射的信号共同使用整个频带,发射时间又是任意的,各用户的发射信号在时间上、频率上都可能互相重叠。因此,采用传统的滤波器或选通门是不能分离信号的,这样对某用户发送的信号,只有与其相匹配的接收机,通过相关检测器才可能正确接收。

       码分复用(Code division multiplexing access,同样简称CDMA)是另一种共享信道的方法,每一个用户可以在同样的时间使用同样的频带进行通信。在CDMA系统中,发送端用互不相干、相互正交(准正交)的地址去调制所要发送的信号,接收端则利用码型的正交性通过地址从混合的信号中选出相应信号。 

2.仿真效果预览

matlab2022a仿真结果如下:

3.MATLAB核心程序

..........................................................
 
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

4.完整MATLAB

V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值