⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.m

📁 cmda仿真程序
💻 M
字号:
clear, clc, close all

% 0 产生扩频码,I支路为kasami码,Q支路为GOLD码
I_Chip = kasami(1);
I_Chip = I_Chip(1,:);

Q_Chip = gold(1);
Q_Chip = Q_Chip(1,:);

NumBit = 10;
SynOffset = 0;
BER_Total = [];


% 在不同SNR下进行仿真
for SNR = -10:-2:-20
    
% 在同一个SNR下仿真1000次
    for SimuTimes = 1:1000

    % 1 产生数据帧信息,分为I,Q共2个支路
        DataFrame = randn(2,NumBit);
        DataFrame(DataFrame <= 0) = -1;
        DataFrame(DataFrame > 0) = 1;

    % 2 扩频
        DSFrame = BD_DSSS(DataFrame, I_Chip, Q_Chip);
        DsStream = DSFrame(1,1:NumBit * 255);

    % 3 信道干扰
        noise = randn(1,NumBit * 255);

        RecStream = DsStream + 10^(-1 * SNR / 20) * noise;
    % 4 解扩
        for i = 1:(NumBit - 1)
    % SynOffset用来模拟扩频码不同步的情况,SynOffset = 0,表示已同步。        
            tempRecFrame1 = RecStream(((i - 1) * 255 + 1 + SynOffset):i * 255 + SynOffset);
            RecBit(i) = sum(tempRecFrame1 * I_Chip');
        end 
    % 5 单步相关
    %    for i = 1:(NumBit - 2)*255
    %        tempRecFrame2 = RecStream(i + SynOffset:i + 254 + SynOffset);
    %        StepCorr(i) = sum(tempRecFrame2 * I_Chip');
    %    end

    % 7 误码率    
        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

    end

    SNR = SNR
    BER_Total = [BER_Total mean(BER,2)]
end

SNR = -10:-2:-20

figure
plot(SNR, BER_Total,'r*')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -