【通信原理】【实验】实验二:数字基带传输实验(GZHU)

该实验探讨了数字基带传输中滚降系数和信噪比对信号传输质量的影响。通过Matlab实现,模拟了随机二进制序列在升余弦脉冲成型、高斯信道传输及匹配接收过程。实验显示,滚降系数的不同导致发送端和接收端时域、频域波形的变化,而信噪比的改变则影响接收端抽样判决后的误码率。最终,通过计算误码率评估了系统性能。
摘要由CSDN通过智能技术生成

文章目录


实验二:数字基带传输实验

  1. 信源为长度N=1000的随机“0”,“1”序列,发送端符号速率RB=1000Baud
  2. 采用双极性编码;
x = randi([0,1], 1, N);     % 随机生成0或者1  个数是N个
D_x = 2 * x - 1 ;           % 双极性码型  

  1. 使用升余弦脉冲成型,尝试不同滚降系数和延迟的平方根升余弦脉冲成型的效果:
    (a) 固定时延delay=3,讨论滚降系数α=0.25,0.5,0.75三者的区别;

更改不同的delay(时延)和alpha(滚降系数)
使用conv()函数脉冲成型输出的是时域上的波形
之后使用fft();傅里叶变换,在取绝对值abs()后得到的是频域上的波形;因为fft后的结果是复数,复数没法作图,所以一般会用模(复数的绝对值),实部或幅角这些实数作图。所有要加上绝对值;

  1. 编写数字基带传输的完整Matlab实现代码,包括脉冲成型、信道、匹配接收、判决几个部分,取α=0.25,delay=5;高斯信道,信噪比为-15dB:5dB:15dB。注意发送滤波器和接收滤波器对信号产生的时延影响。请给出以下信息:snr=-10,-5,0,5,10
    (a) 发送端脉冲成型后的时域波形和频域波形;
    发送端脉冲成型是在平方根升余弦之后使用conv()函数,得到时间域波形,fft()函数得到频域上波形;

(b) 接收端匹配接收后的时域波形和频域波形;
接受端也是使用升余弦函数继续脉冲成型;
不过信号是使用传输信号(含有高斯白噪声的);当经过conv()函数就是脉冲成型;
© 发送和接收的信号波形对比度;
当经过抽样判决的时候得到

Rect_M = zeros(N); % 初始化一个列表,存放1/-1  
for i = 1:N  
    if res_s(i) >0  
        Rect_M(i)=1;  
    elseif res_s(i) <0  
        Rect_M(i)=-1;  
    end  
end  

画出接收端抽样判决之后得到的序列 Rect_M与发送端发送的序列 D_x 的波形,两者对比。

(d) 数字基带传输的误码率

% 计算误码率 都是矩形波比较D_x和Rect_M  
erro = 0;  
for i =1:N   
    if Rect_M(i) ~= D_x(i)    
        erro = erro + 1;  
    end  
end  
error_lv = erro/N;  

接收端误码率就是统计原始双极性码与和恢复出来的码元之间错误码元的占比;

实验性代码,没有怎么整理,错误难免!希看官轻批!


  
clear;  
clc;  
N = 1000;    
x = randi([0,1], 1, N);     % 随机生成0或者1  
D_x = 2 * x - 1 ;           % 双极性码型  
Rect_p = ones(1,8);         % 扩采样    
%subplot(2, 1 ,1);  
%stem(D_x);axis([0 200 -1 1]);title("原始波形");  
x_p = kron(D_x,Rect_p);     % 扩充8倍   后有解释
  
%subplot(2,1,1);  
%stem(D_x);  
%title("原始波形双极性码");axis([0 200 -1 1]);  
%subplot(2, 1 ,2);  
%stem(x_p);axis([0 200 -1 1]);title("扩采样波形");  
  
fb=1000;                    %发送端符号速率    
fs=8000;                    %滤波器采样频率    
oversamp=fs/fb;             %过采样率    
delay = 5 ;                 %滤波器时延    
alpha = 0.25;               %滚降系数    
erro=0;  
S_N =-5;                    % 信噪比-10 -5 0 5 10  
  
h_sqrt = rcosine (1, oversamp, 'fir/sqrt', alpha, delay);  % %平方根升余弦滤波器 (发送端)  
  
% 发送端时域上的波形  
sendsignal_oversample=kron(D_x, [1, zeros(1, oversamp-1)]);   
  
sendshaped=conv(sendsignal_oversample, h_sqrt); % 发送端脉冲成型  
figure('name','发送端脉冲成型')  
subplot(2,1,1);  
stem(sendshaped);  
title("时域");axis([0 200 -1 1]);  
f_x = fft(sendshaped,N);  
y = abs(f_x);  
subplot(2,1,2);  
plot(y);  
title("频域");  
  
% 高斯白噪声  
x_n = awgn(sendshaped, 10, 'measured', 'db'); % 添加高斯白噪声  
  
% 加噪声后频域上的波形  

% figure('name','添加高斯白噪声后')  
% 画子图,第一个  
%%subplot(2, 1, 1);  
%stem(sendsignal_oversample);axis([100 500 -10 15]);title("S/N:-10 接收端时间域波形");  
%stem(noi_s);axis([0 200 -1 1]);title("发送端波形");  
res = conv(x_n,h_sqrt); % 接收端脉冲成型  
  
figure('name','接收端时域和频域');  
subplot(2, 1, 1);  
stem(res);title('时域:');axis([0 100 -3 3]);  
res1 = fft(res,N);  
r_ = abs(res1);                 % 傅里叶变换后取绝对值  
subplot(2, 1, 2);  
plot(r_);title('频域:');%axis([0 100 -7 7]);  
  
% 接收端同步,抽样  
% 抽样判决 两个时延*扩采样  
SynPosi = delay * oversamp * 2 + 1 ;   
SymPosi = SynPosi + (0:oversamp:(N - 1 ) * oversamp );  
res_s = res(SymPosi) % 接收信号  
  
Rect_M = zeros(N); % 初始化一个列表,存放1/-1  
for i = 1:N  
    if res_s(i) >0  
        Rect_M(i)=1;  
    elseif res_s(i) <0  
        Rect_M(i)=-1;  
    end  
end  
figure('name','接受端抽样判决');  
subplot(2,1,1);  
stem(Rect_M);axis([0 200 -2 2]);  
title("S_N=10 判决后波形匹配");  
subplot(2,1,2);  
stem(D_x);  
title("原始波形双极性码");axis([0 200 -2 2]);  
% 计算误码率 都是矩形波比较D_x和Rect_M  
erro = 0;  
for i =1:N   
    if Rect_M(i) ~= D_x(i)    
        erro = erro + 1;  
    end  
end  
error_lv = erro/N;  
 


x_p = kron(D_x,Rect_p); % 扩充8倍 后有解释
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

解释:D_x :双极性码元
x_p :扩采样之后的码元
h_sqrt :平方根升余弦后的信号
sendshaped:发送端脉冲成型信号
x_n :发送端脉冲成型信号在信道传输的时候添加了高斯噪声
res :接收端脉冲成型
SynPosi = delay * oversamp * 2 + 1 ; SymPosi = SynPosi + (0:oversamp:(N - 1 ) * oversamp ); 抽样判决点

这里由于发送端和接收端都存在时延,所有delay要* 2之后乘上扩采样倍数,选择合适的采样点;之后每隔扩采样点采样一次
(0:oversamp:(N - 1 ) * oversamp )%意思是从0到(N - 1 ) * oversamp 每个oversamp个采样点采样一次

最后一个就是figure(s)运行一次出现多张画布;所以对每个小题都建立一张画布。subplot(2,1,1);意思是一张画布中画多个图,这样是生成两行一列的图,现在选择第一行的图画;

plot()和stem()区别,前者是画连续图,后者是画散点图;
\

上述两个细节看百度

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jucway

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值