通信系统matlab仿真常用基本函数

1.上采样函数(用升余弦滚降滤波器前要进行插值)

y=upsample(x,n);

x 是原始信号,一个向量。

n 是上采样的倍数,即每两个原始样本之间将插入 n-1 个零。

     一般情况下n=sps=fs/Rs     sps为单个符号范围内的采样数

y 是上采样后的信号,其长度是原始信号长度的 n 倍。

2.脉冲成型滤波器

用于定义滤波器系数  

  fir_rcos_trans=rcosdesign(rolloff,span,sps,shape);
  fvtool(fir_rcos_trans,'Analysis','impulse');    %将脉冲响应可视化

rolloff:滚降系数

span:截断范围

sps:单个符号范围的采样数  sps=fs/Rs 

shape:可以选填'sqrt'(均方根成型滤波器),'normal'(升余弦滤波器)

一般在通信系统中,使用‘sqrt’

3.滤波&卷积

  rcos_data = conv(data_i_upsample,fir_rcos_trans,'same');

conv也可以视为信号与系统中经常提到的卷积函数

fir_rcos_trans 是前面设计的根升余弦滤波器的系数数组。相当于卷积中的h(t)

     'full' - 返回完整的 N 维卷积。

     'same' - 返回卷积中大小与 A 相同的中心部分(去掉拖尾)。

     'valid' - 仅返回计算的没有补零边缘的卷积部分。

data_i_upsample 是需要被滤波的信号,这里假设它已经被上采样(例如,通过在每个原始样本之间插入零来实现),并且可能还经过了其他预处理。

rcos_data是滤波后的信号,滤波器的阶数是(span*sps +1),带来的延时是(span*sps)/2。

4.波形观察(时域,频域,眼图,星座图)

figure(1);
plot(rcos_msg_source);
title('时域波形');



figure(2);
plot(abs(fft(rcos_msg_source)));
title('频域波形');


figure(3);
eyediagram(rcos_msg_source(49:end),sps);
title('眼图');



%%绘制教材中完美的星座图要采用解调后的波形,如果想看到一堆乱点的星座图,用抽样判决前的数据,星座图用于判断调制方式的误码率

scatterplot(rx_data);

title('星座图');

5.AWGN信道

      首先需要预设snr(单位dB),通常情况下snr为10dB以上不失真(在仿真中-20dB以上一般可以画出和理论较为相似的Eb/N0~BER曲线)

数字通信系统常采用 Eb/N0~BER 来衡量通信系统的性能,在matlab中 EsN0与 EbN0的计算公式与理论推导略有不同。

 EsN0=snr+10*log10(0.5*sps);

 EbN0=snr+10*log10(0.5*sps)-10*log10(M);  %M为输入码元的比特数

信号通过AWGN信道

data_qpsk_addnoise = awgn(data, snr, 'measured');% 经过awgn信道

关于上述公式中0.5*sps的问题,是因为matlab在生成AWGN信道时会自动将功率谱范围变为2倍因此在计算时,基带:sps         频带:0.5*sps

6.理论误码率计算

以QPSK为例

ber_qpsk = berawgn(EbN0, 'psk', M, 'nondiff');

需要选定调制方式,注matlab中不认可qpsk这种调制方式

对于非差分数据编码,需要使用'nondiff'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hhh.Danko

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

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

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

打赏作者

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

抵扣说明:

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

余额充值