教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

Matlab编程与系统仿真:基带传输课程设计 - 图文(2)

来源:网络收集 时间:2026-05-28
导读: 将HDB3码作为滤波器的输入,函数输出系统输出信号;利用滤波器设计器FDATool设计Nyquist滤波器,其中参数设定:比特传输速率Rb=16b/s,每bit抽样点数N=16,滚降因子设定为0.5. (6)抽样判决:函数function sample_

将HDB3码作为滤波器的输入,函数输出系统输出信号;利用滤波器设计器FDATool设计Nyquist滤波器,其中参数设定:比特传输速率Rb=16b/s,每bit抽样点数N=16,滚降因子设定为0.5.

(6)抽样判决:函数function sample_signal=sampling(signal,n) 将系统输出信号作为判决器函数的输入,进行抽样判决;选择每bit的中心抽样进行抽样,当信号抽样值>0.5,则信号恢复时函数为1,若信号抽样值<-0.5,则信号恢复时信号值设定为-1,其余恢复为0。

注:一般判定值不设定为0,因为若有噪声等对信号进行干扰,导致系统输出信号不是理想的。

(7)码型译码:函数function hdb3=hdb3_signal1(fsignal)

将抽样判决后的信号作为函数的输入,进行码型反变换,函数输出为恢复了的欲传送的01比特流。将编码赋值的B和V反转为零,根据编码规则,查找出连续两个0信码,如果相邻的两个信码的极性相同则四个全部转换成0;查找出连续三个0,其相邻的两个信码极性相同,则把0后的一个信码置0。

2. 编程工具的选择为Matlab 其原因是该软件具有以下特性; (1)友好的工作平台和编程环境 (2)简单易用的程序语言

(3)强大的科学计算机数据处理能力 (4)出色的图形处理功能 (5)应用广泛的模块集合工具箱 (6)实用的程序接口和发布平台 (7)应用软件开发(包括用户界面) 3. 编码与测试

(1)主函数

clc

clear all

a=rand(1,129); %生成129位随机序列; n=16;

A=2*round(a)-1; %生成01比特流; signal1=[];

for i=1:length(A) if(A(i)==1)

5

signal1=[signal1,ones(1,16)]; else

signal1=[signal1,zeros(1,16)]; end end figure

subplot(3,1,1);

plot(signal1,'g'); %画出01比特流; title('初始源信号')

axis([0,2064,-0.5,1.5]);

%HDB3码型变换;

hdb3_signal=hdb3(A); signal2=[];

for i=1:length(hdb3_signal) if(hdb3_signal(i)==1)

signal2=[signal2,ones(1,16)]; else if (hdb3_signal(i)==0)

signal2=[signal2,zeros(1,16)]; else

signal2=[signal2,(-1)*ones(1,16)]; end end end

subplot(3,1,2)

plot(signal2) %画出转换后的HBD3双极性码; title('HBD3双极性码') axis([0,2064,-1.5,1.5]);

%将HDB3码转换成归零码

RZ_signal=RZhdb3(hdb3_signal,n); subplot(3,1,3)

plot(RZ_signal) %画出HBD3归零码; title('HDB3归零码')

axis([0,2064,-1.5,1.5]); figure

subplot(3,1,1) plot(signal1,'g') title('初始源信号') axis([0,2064,-0.5,1.5])

%对归零码添加加性高斯白噪声 noiseRZ_signal=noise(RZ_signal) subplot(3,1,2)

6

plot(noiseRZ_signal) %画出加入噪声后信号; title('加入噪声后信号') axis([0,350,-2,2]);

%进入升余弦滚将系统 load Nyquist;

filter_signal=filter(Nyquist,1,noiseRZ_signal) subplot(3,1,3)

plot(filter_signal) %画出通过升余弦滚降系统的信号; title('通过升余弦滚降系统信号') axis([0,2064,-1.5,1.5]);

%对信号进行抽样判决

sample_signal=sampling(filter_signal,n); signal3=[];

for i=1:length(sample_signal) if(sample_signal(i)==1)

signal3=[signal3,ones(1,16)]; else if (sample_signal(i)==0)

signal3=[signal3,zeros(1,16)]; else

signal3=[signal3,(-1)*ones(1,16)]; end end end figure

subplot(2,1,1) plot(signal1,'g') title('初始源信号')

axis([0,2064,-0.5,1.5]); subplot(2,1,2)

plot(signal3) %画出抽样判决后的信号; title('抽样判决后信号') axis([0,2064,-1.5,1.5]);

%恢复为原01比特流

re_signal=hdb3_signal1(sample_signal); signal4=[];

for i=1:length(A) if(A(i)==1)

signal4=[signal4,ones(1,16)]; else

signal4=[signal4,zeros(1,16)];

7

end end figure

subplot(2,1,1) plot(signal1,'g') title('初始源信号') axis([0,2064,-0.5,1.5]) subplot(2,1,2) plot(signal4)

title('HBD3码反编码信号') axis([0,2064,-0.5,1.5]) s=0;

for i=1:129

s=s+abs(re_signal(i)-A(i)); end

WML=s/129

(2)码型编码—转换HDB3码

function hdb3_signal=hdb3(signal) B=1;

hdb3_signal=zeros(size(signal)); %初始化输出序列; count=0; %连0计数器; k=1;

for i=1:length(signal)

if signal(i)==1 %遇1则极性反转;

hdb3_signal(i)=-B; %与之前的一个1的极性相反; B=hdb3_signal(i);

count=0; %计数器置0; else

count=count+1;

if count==4 %判断满足条件的码型; count=0; if k==1

hdb3_signal(i)=hdb3_signal(i-4); k=0;

V=hdb3_signal(i); else

hdb3_signal(i)=-V; %遇4连零则置为V V=hdb3_signal(i);

if hdb3_signal(i)*B==1 %V与前一个非零符号极性相同 hdb3_signal(i-3)=hdb3_signal(i); %否则置为B end

B=hdb3_signal(i); end end

8

end end end

(3)设置归零码

function RZ_signal=RZhdb3(signal,n) j=ones(1,n/2); %0数组; k=zeros(1,n/2); %1数组; RZ_signal=[];

for i=1:length(signal)

if signal(i)==1

RZ_signal=[RZ_signal,j,k]; %每个信码先填充n/2个原码型,再填充n/2个0码; else if signal(i)==-1

RZ_signal=[RZ_signal,(-1)*j,k]; else

RZ_signal=[RZ_signal,k,k]; end end end end

(4)噪声函数

function zs=noise(signal) %信号加入噪声;

noise=sqrt(0.5)/sqrt(2)*randn(1,length(signal)); %设置噪声功率W=0.5,根据函数写出噪声; zs=signal+noise; end

(4)基带成型网络——升余弦滚降系统 %进入升余弦滚将系统 load Nyquist;

filter_signal=filter(Nyquist,1,noiseRZ_signal) subplot(3,1,3)

plot(filter_signal) %画出通过升余弦滚降系统的信号;

(6)抽样判决

function sample_signal=sampling(signal,n)

sample_signal=[]; %设定空数组用于存放生成的新信码; for i=n/2:n:length(signal) %设置间隔来取出抽样值;

if signal(i)>0.5 %当信号抽样值>0.5,则信号恢复时函数为1; sample_signal=[sample_signal,1];

…… 此处隐藏:2098字,全部文档内容请下载后查看。喜欢就下载吧 ……

Matlab编程与系统仿真:基带传输课程设计 - 图文(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/598427.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)