**
摘要
**首先从伪随机序列入手,结合M序列的原理,研究了M序列的自相关特性,即在延迟为0处自相关取得最大值,结合直接序列扩频系统,选择了BPSK调制方式,将随机生成的信号源进行扩频,调制,引入AWGN信道模型,对信号添加了高斯白噪声,在接收端,将接收到的信号与恢复载波信号相乘,由于噪声引入了较高的频率分析,基于凯萨尔窗函数对加噪信后进行了低通滤波,对滤波后的函数进行解扩和抽样判决后即可恢复出原信号,并对比了不同噪声下的误码率曲线。基于MATLAB平台,设计了扩频通信系统GUI界面,用户通过点击按钮即可直观观察过程图像,增强了系统的交互性,通过对扩频通信系统的研究,对于后续通信系统和可视化的研究具有重要的理论指导意义。
开发环境
Matlab 2022a
部分实现代码
% 初始化两个LFSR的参数
N = 5; % LFSR的阶数,选择5作为示例
lfsr1 = ones(1, N); % 第一个LFSR的初始状态
lfsr2 = [1 1 0 0 1]; % 第二个LFSR的初始状态,不同于第一个以确保序列不同
taps1 = [5, 3]; % 第一个LFSR的反馈抽头位置
taps2 = [5, 4]; % 第二个LFSR的反馈抽头位置
% 生成两个M序列
seqLength = 2^N - 1; % 序列长度
mSeq1 = zeros(1, seqLength);
mSeq2 = zeros(1, seqLength);
for i = 1:seqLength
mSeq1(i) = lfsr1(end);
feedback1 = mod(sum(lfsr1(taps1)), 2);
lfsr1 = [feedback1, lfsr1(1:end-1)];
mSeq2(i) = lfsr2(end);
feedback2 = mod(sum(lfsr2(taps2)), 2);
lfsr2 = [feedback2, lfsr2(1:end-1)];
end
% 生成Gold序列
goldSeq = mod(mSeq1 + mSeq2, 2);
% 计算并绘制自相关函数
[autoCorrGold, lags] = xcorr(goldSeq - mean(goldSeq), 'biased');
figure;
subplot(2,1,1);
stem(lags, autoCorrGold, 'filled');
title('Gold序列的自相关函数');
xlabel('延迟');
ylabel('自相关值');
grid on;
% 计算并绘制互相关函数
[crossCorr, lags] = xcorr(mSeq1 - mean(mSeq1), mSeq2 - mean(mSeq2), 'biased');
subplot(2,1,2);
stem(lags, crossCorr, 'filled');
title('两个M序列的互相关函数');
xlabel('延迟');
ylabel('互相关值');
grid on;
% 设置美化图表
set(gcf, 'Color', 'w'); % 设置图表背景色为白色
% 清空环境变量
clear all;
close all;
clc;
% 设置参数
fs = 1e6; % 采样率
fc = 1e3; % 信号载频率
chips = 100; % 扩频码片数
SNR_dB = -10:2:20; % 信噪比范围(dB)
% 生成信号
t = 0:1/fs:(chips/fs)-1/fs;
data = randi([0,1],1,chips);
signal = 2*data - 1; % BPSK调制
% 计算信号功率
signal_power = mean(signal.^2);
% 初始化结果数组
spread_factor = zeros(size(SNR_dB));
output_SNR = zeros(size(SNR_dB));
% 循环计算不同信噪比下的扩频增益和输出信噪比
for i = 1:length(SNR_dB)
% 计算噪声功率
noise_power = signal_power / (10^(SNR_dB(i)/10));
% 生成高斯噪声
noise = sqrt(noise_power).*randn(1, length(signal));
% 扩频
spread_signal = repmat(signal, chips, 1);
% 添加噪声
noisy_signal = spread_signal + noise;
% 计算输出信噪比
output_SNR(i) = 10*log10(mean(signal.^2) / mean(noise.^2));
% 计算扩频增益
spread_factor(i) = 10*log10(mean((spread_signal(:).^2)) / mean((noisy_signal(:).^2)));
end
% 绘制结果
figure;
plot(SNR_dB, spread_factor, 'b-o');
xlabel('SNR (dB)');
ylabel('扩频增益 (dB)');
title('扩频增益和SNR的关系');
grid on;
实现结果
不同信号干扰幅度
扩频前后频谱分析
判决信号采样
GUI设计
实现结果