基于matlab的直接序列扩频仿真

上传人:飞*** 文档编号:40353423 上传时间:2018-05-26 格式:DOC 页数:2 大小:28.50KB
返回 下载 相关 举报
基于matlab的直接序列扩频仿真_第1页
第1页 / 共2页
基于matlab的直接序列扩频仿真_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于matlab的直接序列扩频仿真》由会员分享,可在线阅读,更多相关《基于matlab的直接序列扩频仿真(2页珍藏版)》请在金锄头文库上搜索。

1、信息码的频率设为 50kHz,采样频率设为 40MHz。假设信源信息码的总长度为 20,则每个 信息码内含 40MHz/50kHz800 个采样点。通过 sign 函数,把 20 个(0,1)区间内的随机数 变成 20 个只用“1”与“1”表示的信息码,而后再通过一个循环,对每一个信息码采样 800 次,共生成 16000 个采样点,每个点之间的间隔为 0.025s。伪随机码频率设为 5MHz,信息码频率为 50kHz,所以每个信息码内包含 5MHz/50kHz100 个伪码。通过调 用一个产生 m 序列的子函数 mgen.m,与一个长度为 20100 的循环,就得到了伪随机序 列 PN 码。

2、sign(x):符号函数 (Signum function)。 当 x0 时,sign(x)=1。程序如下: %m 序列发生器 function out = mgena(g,state,N) %输入 g: m 序列生成多项式 (10 进制输入) % state: 寄存器初始状态 (10 进制输入) % N: 输出序列长度 gen = dec2bin(g) - 48; M = length(gen); curState = dec2bin(state,M-1) - 48; for k=1:N out(k) = curState(M-1);a = rem( sum( gen(2:end).*cur

3、State ),2 );curState = a curState(1:M-2); end主程序 code_length=20;%信息码元个数 N=1:code_length; rand(seed,0); x=sign(rand(1,code_length)-0.5);%信息码 for i=1:20s(1+(i-1)*800):i*800)=x(i);%每个信息码元内含 fs/f=800 个采样点 end %产生伪随机码 length=100*20;%伪码频率 5MHz,每个信息码内含 5MHz/50kHz=100 个伪码 x_code=sign(mgen(9,11,length)-0.5);

4、%把 0,1 序列码变换为-1,1 调制码 for i=1:2000w_code(1+(i-1)*8):i*8)=x_code(i);%每个伪码码元内含 8 个采样点 end%扩频 k_code=s.*w_code; %k_code 为扩频码 %调制 fs=20e6; f0=30e6; for i=1:2000AI=2;dt=fs/f0;n=0:dt/7:dt;%一个载波周期内采样八个点cI=AI*cos(2*pi*f0*n/fs);signal(1+(i-1)*8):i*8)=k_code(1+(i-1)*8):i*8).*cI; end %解调 AI=1; dt=fs/f0; n=0:dt

5、/7:dt;%一个载波周期内采样八个点 cI=AI*cos(2*pi*f0*n/fs); for i=1:2000signal_h(1+(i-1)*8):i*8)=signal(1+(i-1)*8):i*8).*cI; end %解调 AI=1; dt=fs/f0; n=0:dt/7:dt; %一个载波周期内采样八个点 cI=AI*cos(2*pi*f0*n/fs); for i=1:2000signal_h(1+(i-1)*8):i*8)=signal(1+(i-1)*8):i*8).*cI; end %低通滤波 wn=5/10000000;%截止频率 wn=fn/(fs/2),这里的 fn 为信息码(扩频码)的带宽 5M b=fir1(16,wn); H=freqz(b,1,16000); signal_d=filter(b,1,jk_code);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号