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

📄 simple_dsss.m

📁 直扩通信的MATLAB仿真
💻 M
字号:
%File simple_dsss.m
code_length=2000; %信息码元个数
SF=63;          %扩频增益
fs=31500000;    %采样率
f=50000;        %信息码速率

%产生信息码
N=1:code_length;
rand('seed',0);
x=sign(rand(1,code_length)-0.5); %x为信息码
for i=1:code_length
s((1+(i-1)*fs/f):i*fs/f)=x(i); %每个信息码元内含fs/f=630个采样点
end

%为随机码由MSequence产生

%产生伪随机码
length=SF*code_length; %扩频后的码数
PN_code=MSequence(SF+1);
x_code=reshape(PN_code.'*ones(1,code_length),1,length); %把0,1序列码变换为-1,1调制码
for i=1:(code_length*SF)
w_code((1+(i-1)*10):i*10)=x_code(i); %k_code为扩频码,每个码元内含10个采样点
end
for i=1:SF
    jkw_code((1+(i-1)*10):i*10)=PN_code(i);
end
%扩频
k_code=s.*w_code; %k_code 为扩频码

%BPSK调制
for i=1:length
AI=2;
dt=fs/(f*SF);
n=0:dt/9:dt; %一个载波周期内采样10个点
cI=AI*cos(2*pi*f*SF*n/fs);
signal_t((1+(i-1)*10):i*10)=k_code((1+(i-1)*10):i*10).*cI;
end

%解调
AI=1;
dt=fs/(f*SF);
n=0:dt/9:dt; %一个载波周期内采样八个点
cI=AI*cos(2*pi*f*SF*n/fs);
for i=1:length
signal_r((1+(i-1)*10):i*10)=signal_t((1+(i-1)*10):i*10).*cI;
end

%低通滤波(代通采样)
wn=(f*SF)/fs; %截止频率wn=fn/(fs/2),这里的fn为信息码(扩频码)的带宽
b=fir1(16,wn);
H=freqz(b,1,code_length*SF*10);
signal_d=filter(b,1,signal_r);




%解扩
jk_code=signal_d.*w_code;
plot(jk_code)
IncomingChips=reshape(jk_code,SF*10,code_length);
jk_code=jkw_code*IncomingChips;
DetectedSymbols=sign(jk_code);
%求BER
ErrorVector=0.5*abs(DetectedSymbols-x);
Errorsum=sum(ErrorVector);
BER=Errorsum/code_length;





⌨️ 快捷键说明

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