当前位置:文档之家› 数字基带传输常用码型的MATLAB表示

数字基带传输常用码型的MATLAB表示

数字基带传输常用码型的MATLAB表示
在某些具有低通特性的有线信道中,特别是传输距离较近的情况下,数字基带信号不经调制可以直接传输,这种系统称为数字基带系统。

而具有调制解调过程的数字系统称为数字带通传输系统。

在第七章中,将列举数字带通传输系统仿真的例子,在本章中,我们重点讨论数字基带常用码型的产生,即数字基带信号的产生。

教材中,我们以单极性不归零码和单极性不归零码的实现作为参考。

单极性不归零码MA TLAB程序如下:
function y=snrz(x)
% 本函数实现输入二进制码,输出编号的单极性非归零码
% 输入x为二进制码,输出y为单极性非归零码
num=200; % 单极性非归零码每一个码元包含的点
t=0:1/num:length(x);
for i=1:length(x);
if x(i)==1;
for j=1:num;
y((i-1)*num+j)=1; % 对应的点赋值为1
end
else
for j=1:num;
y((i-1)*num+j)=0; % 对应的点赋值为0
end
end
end
y=[y,x(i)]; % 为了绘制图形,注意要将y序列加最后一位
plot(t,y); grid on; axis([0 i -0.2 1.2]); title('单极性非归零码1 0 0 1 0 1'); % 绘图
在MATLAB命令行窗口中键入x的值,并调用函数snrz(x),就可以得到对应的单极性不归零码。

如输入以下指令,将出现图1所示的结果。

单极性非归零码 1 0 0 1 0 1
0123456
图1 单极性不归零码
单极性不归零码MA TLAB程序如下:
function y=srz(x)
% 本函数实现输入二进制码,输出编号的单极性归零码
% 输入x为二进制码,输出y为单极性归零码
num=200; % 单极性非归零码每一个码元包含的点
t=0:1/num:length(x);
for i=1:length(x);
if x(i)==1;
for j=1:num/2;
y((i*2-2)*num/2+j)=1; % 对1而言,前半部分时间值为1
y((i*2-1)*num/2+j)=0; % 对1而言,后半部分时间值为0 end
else
for j=1:num;
y((i-1)*num+j)=0; % 对应的点赋值为0
end
end
end
y=[y,x(i)]; % 为了绘制图形,注意要将y序列加最后一位
plot(t,y); grid on; axis([0 i -0.2 1.2]); title('单极性非归零码1 0 0 1 0 1');
同上,在MATLAB命令行窗口中键入x的值,并调用函数srz(x),就可以得到对应的单极性归零码。

如输入以下指令,将出现图2所示
的结果。

x=[1 0 0 1 0 1];
srz(x);
单极性归零码 1 0 0 1 0 1
0123456
图2 单极性归零码
借鉴上面两种码型的产生方法,便可以轻松的写出双极性归零码、双极性不归零码、差分码等的程序。

对基带数字调制与解调仿真,在MATLAB通信工具箱中分别提供了函数dmodce和ddemodce来实现,读者可以通过help命令来获取相关信息。

下面列举了一个2FSK基带调制解调的仿真示例。

MATLAB程序如下:
% 本程序实现FSK调制解调基带仿真
x=randint(1,1000); % 产生0 1随机序列
fd=10; % 基带信号速率
fs=200; % 采样频率
M=2; % M-FSK
tone=20;
snr=-10; % 信噪比
basefsk=dmodce(x,fd,fs,'fsk',M,tone); % 调用dmodce函数进行fsk调制
basefsk_awgn=awgn(basefsk,snr); % 叠加噪声
demod_basefsk=ddemodce(basefsk,fd,fs,'fsk',M,tone); % 未加噪声的已调信号
demod_basefsk_awgn=ddemodce(basefsk_awgn,fd,fs,'fsk',M,tone); % 加噪声后的已调信号
m=1:length(x);
figure(1);
subplot(3,1,1);stairs(m,x); axis([1 length(x) -0.5 1.5]);title('基带信号波形'); % 绘制基带信号
subplot(3,1,2);
stairs(m,demod_basefsk);axis([1 length(x) -0.5 1.5]);title('未加噪声的已调信号波形');
subplot(3,1,3);
stairs(m,demod_basefsk_awgn);axis([1 length(x) -0.5 1.5]);title('加噪声后的已调信号波形');
disp('通过理想信道时,误码数及误码率为:');
[n_error,err_rate]=symerr(x,demod_basefsk)
disp('通过非理想信道时,误码数及误码率为:');
[n_error1,err_rate1]=symerr(x,demod_basefsk_awgn)
运行程序,可以得到2FSK基带信号、解调信号如图3。

如果Num的值设为1000,snr的值设为-10 dB,运行程序在MATLAB命令行窗口,可得到理想信道以及非理想信道2FSK解调产生的误码数及误码率如下。

如果改变snr的值,会发现snr的值越大,误码数及误码率会越小,即噪声对信号的影响会越小。

通过理想信道时,误码数及误码率为:
n_error =
err_rate =
通过非理想信道时,误码数及误码率为:
n_error1 =
78
err_rate1 =
0.0780
基带信号波形
51015202530未加噪声的已调信号波形
51015202530加噪声后的已调信号波形
51015202530
图3 2FSK基带信号及解调信号波形。

相关主题