matlab对通信系统仿真很方便,大多数操作都有对应的函数命令,比较难的是知识点的掌握。
下图是数字通信系统模型:

下面介绍信源函数的产生。
信源的作用:将信息转换成电信号,数学上信源的输出是一个随时间变换的随机函数。
提到随机函数,就可以使用rand系列的函数
1、randi
randi([a,b],m,n):产生一个m x n的均匀分布随机矩阵,元素的值属于[a,b]且取整数。

2、randn
randn(m,n) > 0.5 函数产生m x n的正态分布的随机矩阵,元素值在[0,1]。通过判断,可以得到0/1的随机数

3、randsrc
可以指定每一个符号的出现概率
randsrc(m,n,[alphabet;prob]):mx n随机矩阵,alphabet:指定元素范围,元素为整数,prob每个元素出现概率。

4、wgn
产生高斯白噪声
wgn(m,n,p):m x n,p为噪声功率(dBW)
1W = 0dBW
实例:
clc;
clear;
symbols = 1:6;%信源符号
p = [.4 .2 .1 .15 .05 .1];%信源概率分布
x = randsrc(1,1200,[symbols;p]);%长为1200的信源序列
x_bit = reshape(de2bi(x),1,3*1200);%转换成二进制比特流
x = randsrc(1,1200,[symbols;p]);%产生1200个元素为1:6,且概率分布为p的信源序列
B = de2bi(A):将十进制数转换成二进制,值得注意的是,如果A是向量,那么B是矩阵,为了将B换为矩阵,利用reshape
reshape(A,[a,b]):将矩阵A变成a行b列
x_bit = reshape(de2bi(x),1,3*1200);%把信源序列转换成二进制比特流
结果:
信源序列:

二进制比特流

x = randi([0 M-1],1000,1);
在 [0,M-1]之间产生1000个随机数
本文介绍了如何使用Matlab中的rand系列函数,如randi、randn和randsrc,来生成信源随机函数,包括均匀分布、正态分布和概率分布指定的信源序列。此外,还展示了如何将信源转换为二进制比特流,以及wgn函数用于产生高斯白噪声的实例。

6107

被折叠的 条评论
为什么被折叠?



