已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
M 数字基带传输系统的仿真数字基带传输系统的仿真 ver 1 02 杨鸿文杨鸿文 北京邮电大学电信工程学院无线中心北京邮电大学电信工程学院无线中心 一九九八年三月四日一九九八年三月四日 通信原理实验讲义数字基带传输系统的仿真 2 目录目录 1 引言引言 4 2 MATLAB 初步初步 6 2 1 命令的执行与显示命令的执行与显示 6 2 2 矩阵 矢量与标量矩阵 矢量与标量 7 2 2 1 矩阵 7 2 2 2 矢量 7 2 2 3 标量 8 2 2 4 数据类型 8 2 2 5 冒号 8 2 2 6 空矢量 8 2 2 7 矢量的引用 8 2 3 基本运算基本运算 9 2 3 1 矢量与标量的加减乘除 9 2 3 2 矢量与矢量之间的加减 9 2 3 3 矢量与矢量之间的点乘 与点除 9 2 3 4 幂 与点幂 9 2 3 5 inf 与 eps 9 2 4 函数函数 10 2 4 1 三角函数 10 2 4 2 指数类函数 10 2 4 3 复数类函数 10 2 4 4 取整函数 11 2 4 5 矩阵产生函数 11 2 4 6 数据分析函数 12 2 5 MATLABM 编程编程 13 2 5 1 M 文件 13 2 5 2 自定义函数 13 2 6 循环与分支循环与分支 14 2 6 1 FOR 循环 14 2 6 2 IF 语句 16 2 6 3 WHILE 语句 16 2 7 二维曲线的绘制二维曲线的绘制 17 2 7 1 函数 plot 17 2 7 2 命令 hold 与 clf 17 2 7 3 命令 grid 与命令 axis 18 2 7 4 函数 semilogy 18 2 7 5 标签 18 通信原理实验讲义数字基带传输系统的仿真 3 2 7 6 figure 与 close 18 2 8 其它命令其它命令 19 2 8 1 who whos 及 clear 19 2 8 2 cd path 及 which 19 3 计算机仿真的一般方法计算机仿真的一般方法 20 3 1 信号及系统在计算机中的表示信号及系统在计算机中的表示 20 3 1 1 时域取样及频域取样取样 20 3 1 2 频域分析 21 3 2 随机信号的产生随机信号的产生 21 3 2 1 高斯噪声的产生 21 3 2 2 随机码序列的产生 21 3 2 3 产生数字基带信号的一般方法 22 3 2 4 NRZ 及 RZ 信号的产生 23 3 3 眼图眼图 23 3 4 误码率误码率 23 3 4 1 取样判决 23 3 4 2 误码率测量 23 3 5 范例范例 23 4 上机实验要求上机实验要求 26 通信原理实验讲义数字基带传输系统的仿真 4 1 引言引言 通信原理课的主要内容就是怎样可靠而有效地实现信息的传输 为此目的 该课从理论上 提出了许多可供选择的传输方法 要使这些传输方法成为现实 就需要制作出相应的发送设备 及接收设备 然后在发送端 我们把欲传送的信息变换成某种适宜的信号并将之馈入传输媒体 电缆 光缆 无线电波等 在接收端 信号又从媒体馈入接收设备 我们再以同发端相反 的过程恢复出原来所发送的信息 根据通信原理课所学的知识 我们知道在什么样的情况下应 该选择什么样的传输方式 并能判断出噪声 信道 传输方式等因素将会怎样影响对我们来说 非常重要的一些通信指标 如信噪比 误码率 发送频谱等等 要想充分地了解某种传输方式的特性 最理想的办法莫过于先把它做出来 再对其进行实 际测量 不过实际制作一套通信系统所需的周期长 代价高 有时要改变系统的某一两个参数 就可能意味着整个系统需要重做 故此对于研究设计人员来说 通过把所有的设计方案 研究 问题等都做成硬件 再对硬件进行测量从而获得系统性能的研究方法应属于不得已而为之 较 好的研究方法应该是在硬件制作以前就先设法对系统特性作尽可能充分的了解 然后再去做硬 件 某种传输方法 当我们把它做成实际系统后 它理应符合通信原理的理论对它的描述 如 果我们用通信仪表对实际系统进行实际测量的话 实测结果应该同理论分析给出一致的结果 如果这两个结果不一致 一般只可能是这样两种情况 一是理论中所假设的某些模型并能不完 全正确地反映实际情况 比如通信原理课中经常假设信道是一个理想滤波器 而实际信道则有 可能是一个多径信道 二是硬件制作可能存在实现上的误差 也就是说我们制作的某一个或某 几个部件的实际性能与我们对它期望的性能之间有一些差距 换句话来说 如果我们在理论阶 段所依赖的模型是充分可信的 如果我们将要制作的硬件确实能够按我们的要求去工作 那么 我们就可以在制作硬件之前 先对将要制作的实际传输系统作充分的研究 并据此对系统设计 是否合理作出评判 如果设计是合理的我们就可以放心地去实现系统 不然就需要修改现有设 计再作分析 然而在通信系统中 除非个别极简单的情况 一般我们很难用推公式这种解析的办法得到 系统的各项性能指标 比如无码间干扰时 双极性最佳基带系统的误码率公式是 但如果信道中确实存在码间干扰 那么对应的误码率公式基本上是不可能Perfc E n e b 1 2 0 的得到的 不过这并不意味着我们就没有别的办法 在计算机技术十分发达的今天 通信中的 许多问题都可以通过计算机仿真的办法来进行研究 通信原理实验讲义数字基带传输系统的仿真 5 计算机仿真实质上就是把硬件实验搬进了计算机 我们可以把它看成是一种软件实验 在 硬件实验系统中 我们用各种电子元器件制作出通信原理中的理论模型所规定的各个模块 再 把它们通过导线或电缆等接在一起 然后再用示波器 频谱仪 误码仪等通信仪表做各种测量 然后分析测量结果 在软件实验中我们也是这样做 只不过所有通信模块及通信仪表的功能都 是用程序来实现的 通信系统的全过程在计算机机中仿真运行 虽然软件实验的不象硬件实验那样让人感到 真实 但对于许多通信问题的研究来说的 确非常有效 与硬件实验相比 软件实验具如下一些优点 1 软件实验具有广泛的适应性和极好的灵活性 在硬件实验中改变系统参数也许意味 着要重做硬件 而在软件实验中则只是改一两个数据 甚至只是在屏幕上按几下鼠 标 2 软件实验更有助于我们较为全面地研究通信系统 有许多问题 通过硬件试验来研 究可能非常困难 但在软件试验中却易于解决 3 硬件实验的精确度取决于元器件及工艺水平 软件实现的精度取决于 CPU 的运算速 度或者说是程序的运算量 4 软件实验建设开发周期短 成本低 本实验是 通信原理实验 的一个组成部分 在本实验中我们使用的软件工具是 MATLAB 我们期望本实验能带给你如下收获 1 学会 MATLAB 软件的最基本运用 MATLAB 是一种很实用的数学软件 它易学易用 MATLAB 对于许多的通信仿真类 问题来说是很合适的 2 了解计算机仿真的基本原理及方法 知道怎样通过仿真的方法去研究通信问题 3 加深对通信原理课有关内容的理解 通信原理是通信工程专业的一门重要专业基础课 从教学实践中我们注意到 此课 的某些内容对初学者来说往往不大好把握 如果你能自己动手 通过仿真的办法对 这些问题进行一些研究和观察 自然会有助于解除你的困惑 限于时间及作者的水平 本讲义必定问题很多 欢迎任何批评及建议 你的意见必定会使 下一个版本增色不少 作者的联系地址是北邮 112 信箱 通信原理实验讲义数字基带传输系统的仿真 6 2 MATLAB 初步初步 2 1 命令的执行与显示 在 Windows 中 用鼠标双击 MATLAB 图标即可启动 MATLAB for Windows MATLAB 的命令提示符为 MATLAB 的命令也称语句或函数 在本文中名词 命令 语句 及 函数 在许多情况下并没有多大差别 在命令行中 键入命令并按回车 Enter 就可以执行命令 执行结果或其它与命令执行 相关的信息将随后显示在屏幕上 例如 why Stupid question 这里 是命令行提示符 why 是命令 Stupid question 是执行结果 在 MATLAB 中 命令 why 的功能是向屏幕输出一个随机字符串 又比如 y log 0 Warning Log of zero y Inf 语句 y log 0 的意思是对 0 求自然对数 函数 log 的返回值被赋给变量 y MATLAB 在运行 时除给出了运算结果为负无穷大 Inf 外 还显示出了对零求对数的告警 在命令的末尾加上分号 表示不显示函数的返回值或语句的运算结果 例如 y log 0 Warning Log of zero 只显示告警信息而不显示运行结果 此时 y 仍然被赋值为 Inf 一行中可以有多条命令 命令与命令之间应用逗号 或分号 隔开 以逗号结尾的 命令显示结果 以分号结尾的命令不显示结果 例如 y log 0 b 1 0 a atan b 180 pi a Warning Log of zero Warning Divide by zero b Inf a 90 这里 y log 0 只显示告警信息而不显示运行结果 b 1 0 既显示告警信息 被零 除 Divide by zero 也显示运行结果 无穷大 Inf 语句 a atan b 180 pi 被 运行但结果未显示 在 MATLAB 中 atan 是反正切函数 pi 是圆周率 语句 a 的作用是 显示 a 的值 a 90 如果语句有运算结果但此结果未被赋值 那么 MATLAB 自动将此结果赋值给变量 ans 它是英语单词 answer 的前三个字母 例如 通信原理实验讲义数字基带传输系统的仿真 7 0 5 erfc sqrt 4 77 ans 0 0010 此处 MATLAB 把的运算结果赋值给 ans erfc 是互补误差函数 sqrt 是求 1 2 477erfc 平方根 有些命令除了在命令行状态下有显示外 还会激活其它图形窗口 如命令 intro demo 等 intro 是 MATLAB 简介 demo 是 MATLAB 的演示程序 这两个命令都是用 MATLAB 编写而成的 在 MATLAB 中标识符的大小写是有区别的 2 2 矩阵 矢量与标量 2 2 1 矩阵 MATLAB 的基本运算对象是矩阵 方括弧 用来定义矩阵 逗号 或空格用来分 隔一行中的不同元素 分号 用来分隔不同的行 例如 a 1 2 3 4 5 6 7 8 9 a 1 2 3 4 5 6 7 8 9 是一个 3 乘 3 的矩阵 2 2 2 矢量 只有一行或一列的矩阵就是矢量 我们分别称其为行矢量 及列矢量 例如 b 1 4 8 2 b 1 4 8 2 是一个行矢量 而 c 1 4 8 2 c 1 4 8 2 是一个列矢量 考虑到本课的具体需要 今后我们主要只考虑行矢量 2 2 3 标量 只有一个元素的矢量或矩阵就是标量 例如 d 1 或 d 1 把 d 定义为一个值为 1 标量 通信原理实验讲义数字基带传输系统的仿真 8 2 2 4数据类型 实数 MATLAB 不需要对实数作类型说明 所有的数都按双精度浮点方式保存 对很大及很小 的数可采用科学记数法 例如 1 3e 18 表示 13 10 18 字符串 MATLAB 也支持字符串变量 字符串由一对单引号界定 字符串在 MATLAB 中被看作 是一个矢量 每个字符构成矢量的元素 例如 str hello 等价于 str h e l l o 复数 在 MATLAB 中如果标识符 i 或 j 没有被定义过 那么一个复数可以简单地用两个实数 a b 组成 d a j b 或 d a i b 表示复数 许多人编程时习惯用 i j 作循环变量 如果你的程 序涉及复数运算的话 最好避免使用它们 2 2 5冒号 设 a1 a2 step 是三个实数标量 则 a1 step a2 表示一组实数 其中第一个是 a1 第二个是 a1 step 依此类推 最后一个数小于等于 a2 step 1 时可省略成 a1 a2 例如 矢量 1 3 就是矢量 1 2 3 而矢量 3 3 1 25 0 等于矢量 3 3 2 05 0 8 2 2 6空矢量 没有元素的矢量称空矢量 用 来表示 例如 a 3 2 5 a 的结果是一个空矢量 2 2 7矢量的引用 若 A 是一个矢量 A k 是 A 的第 k 个元素 其中 k 的最小值为 1 最大值为 length A 函数 length X 的返回值是矢量 X 的长度 若 A 是一个行矢量 B A 2 7 是由 A 的第 2 至第 7 个元素组成的行矢量 C A B 也 是一个矢量 C 的前 length A 元素正好是矢量 A 后 length B 个元素正好是矢量 B 若 A 是一个矢量 B A 1 2 length A 是所有 A 的奇序数元素 例如 A 1 100 则矢量 A 1 2 100 的元素是 1 到 100 之间的所有奇数 矢量 A 30 30 100 等价于 30 60 90 矢量 A 1 9 67 等价于 A 1 A 9 A 67 通信原理实验讲义数字基带传输系统的仿真 9 2 3 基本运算 2 3 1 矢量与标量的加减乘除 矢量加以 减以 乘以 或除以 一个标量时 其结果是该矢量的每 一个元素加 减 乘 除以同一标量 例如 A 1 5 1 的结果是 2 3 4 5 6 c 3 1 1 3 j 的结果是复数矢量 9 j 3 j 3 j 3 j 标量加以 减以 或乘以 矢量的结果与矢量加以 减以 或 乘以 标量的结果相同 即矢量与标量的加 减 乘 运算满足交换律 但请 注意 标量除以 矢量 a A 是非法的 2 3 2 矢量与矢量之间的加减 两个相同长度的矢量相加或相减是其对应的元素相加或相减 例如 a 1 3 5 6 6 20 3 a 3 6 9 2 3 3 矢量与矢量之间的点乘 与点除 若 A 与 B 是两个长度相同的矢量 则 A B 是 A 与 B 的对应元素相乘 A B 是 A 与 B 的对应元素相除 例如 C 1 3 2 5 5 的结果是 2 10 15 D 4 10 2 2 2 1 的结果 是 2 5 2 2 3 4 幂 与点幂 对于标量 a b a b 是以 a 为底 b 为指数的幂运算 例如 2 3 8 对于标量 x 及矢量 A A x 是对矢量 A 的每一个元素求以 x 为指数的幂运算 例如 1 4 9 0 5 的结果是 j 2 3 对于标量 x 及矢量 A x A 是一个矢量 它的每一个元素是以 x 为底 以 A 的对应元素 为指数的幂 例如 10 2 2 的结果是 0 01 0 1 1 10 100 对于两个相同长度的矢量 A B A B 的结果是一个与 A 同长度的矢量 其元素是以 A 的对应元素为底 以 B 的对应元素为指数的幂 2 3 5inf与eps 一个标量除以零得 inf inf 自身是一个标量 它加减乘除以任何实标量仍为 inf 但 inf inf inf inf 及 inf 0 的结果是 NaN Not a Number 它表示结果不确定 标量 eps 相当于无穷小 它反映了运算的精度 对于 MATLAB for Windows eps 的初 始值为 2 2204e 16 eps 的值可任意设置 例如可设 eps 1e 20 或其它值 有时为了避 免程序运行中除以零引起麻烦 我们可给除数加上 eps 例如 通信原理实验讲义数字基带传输系统的仿真 10 x 2 2 pi y sin x x Warning Divide by zero y 1 0e 016 0 3898 0 3898 NaN 0 3898 0 3898 此处的显示表示 y 的值是 1 0e 16 0 3898 0 3898 NaN 0 3898 0 3898 由于 x 3 是零 所以 sin x 3 x 3 发出告警 并给出结果为 NaN 将 x 加上 eps 前面的例子便成 为 x 2 2 pi eps y sin x x y 0 0000 0 0000 1 0000 0 0000 0 0000 2 4 函数 MATLAB 中所有的函数或命令都可借助 help 菜单或在命令行中键入 help 或 help 主题名 得到帮助 结合本课的需要 我们在这里介绍一些常用函数 2 4 1 三角函数 三角函数包括正弦 sin 余弦 cos 正切 tan 反正切 atan 等 例如 X 0 pi 6 pi Y sin X Y 0 0 5000 0 8660 1 0000 0 8660 0 5000 0 0000 本例中 cos X 是对 X 的每一个元素求余弦 X 0 63 2 2 3 5 6 2 4 2 指数类函数 指数类函数包括 e 的指数 exp 自然对数 log 常用对数 log10 平方根 sqrt 等 在 MATLAB 中可对负数求对数或求平方根 例如 log 1 2 Warning Log of zero ans 0 3 1416i Inf 0 0 6931 这里 MATLAB 在运行至求 log 0 时给出了警告但并不中断运行 ln 1j ln0 2 4 3 复数类函数 复数类函数包括求模 abs 求角度 angle 求共轭 conj 求实部 real 求虚部 imag 等 通信原理实验讲义数字基带传输系统的仿真 11 2 4 4 取整函数 取整函数包括零方向取整 fix 负无穷方向取整 floor 正无穷方向取整 ceil 四舍五入 round 取符号 sign 等 例如 x 1 0 5 1 pi x fix x floor x ceil x round x sign x ans 3 1416 1 5708 0 1 5708 3 1416 3 0000 1 0000 0 1 0000 3 0000 4 0000 2 0000 0 1 0000 3 0000 3 0000 1 0000 0 2 0000 4 0000 3 0000 2 0000 0 2 0000 3 0000 1 0000 1 0000 0 1 0000 1 0000 在 MATLAB 中 键入省略号 三个或三个以上的小数点 表示下一行是本行的继续 2 4 5矩阵产生函数 全零矩阵 zeros 及全 1 矩阵 ones zeros n m 产生一个尺寸为 元素全为零的矩阵 ones n m 产生一个尺寸为 nm 元素全为 1 的矩阵 若 n 或 m 不是整数 则按取整后的结果算 若 n 或 m 中 取整 nm 后 有一个为 0 或负值则返回一个空矩阵 zeros N 产生一个 N 维全零方阵 ones N 产生一个 N 维全 1 方阵 zeros size A 产生一个尺寸与 A 相同的全零矩阵 ones size A 产生一个尺寸与 A 相同的全 1 矩阵 这里函数 size a 返回一个行矢量 n m 其中 n 是 a 的行数 m 是 a 的列 数 均匀随机数 rand 及正态随机数 randn rand n m 产生一个尺寸为的矩阵 其元素按均匀分布随机取值于区间 0 1 nm randn n m 产生一个尺寸为的矩阵 其元素服从标准正态分布 均值为零 方差为 nm 1 randn size a 产生一个尺寸与 a 相同的正态分布随机矩阵 rand size a 产生一个 尺寸与 a 相同的均匀分布随机矩阵 例如 a sign randn 1 8000 b a 1 2 c b 0 1 randn size b b 包含 8000 个取值 1 0 等概的随机二进制数 c 是 b 加上了方差为 0 1 的高斯干扰 不带参数地引用 rand 或 randn 返回一个标量的随机数 3 linspace 函数 linspace a b N 产生一个 N 维矢量 N 个元素均匀分隔区间 a b 第一个元素是 a 最后一个元素是 b 通信原理实验讲义数字基带传输系统的仿真 12 2 4 6数据分析函数 数据分析函数包括 最大值 max 最小值 min 均值 mean 标准差 std 升序排序 sort 求和 sum 等 例如 a randn 1 8000 L length a L 8000 y max a min a mean a std a sum a L y 4 0633 3 6618 0 0017 1 0037 0 0017 b a 1 20 b Columns 1 through 7 1 0682 0 1050 1 7675 1 0252 0 8211 1 7200 0 6543 Columns 8 through 9 1 0178 1 4090 当 MATLAB 不能把一个行矢量在屏幕的一行上显示时 它把这个矢量折成若干行显示 并在 每行前说明对应的列序号 如果 max a 函数中 a 不是矢量而是矩阵 则 max a 对 a 的各列求最大值 例如 B rand 5 max B B 0 1665 0 9047 0 4940 0 5007 0 4644 0 4865 0 5045 0 2661 0 3841 0 9410 0 8977 0 5163 0 0907 0 2771 0 0501 0 9092 0 3190 0 9478 0 9138 0 7615 0 0606 0 9866 0 0737 0 5297 0 7702 ans 0 9092 0 9866 0 9478 0 9138 0 9410 其它函数如 min mean std sort sum 也是如此 例如 B rand 5 sort B sum B B 0 8278 0 6295 0 2332 0 8460 0 5373 0 1254 0 7362 0 3063 0 4121 0 4679 0 0159 0 7254 0 3510 0 8415 0 2872 0 6885 0 9995 0 5133 0 2693 0 1783 0 8682 0 8886 0 5911 0 4154 0 1537 ans 0 0159 0 6295 0 2332 0 2693 0 1537 0 1254 0 7254 0 3063 0 4121 0 1783 0 6885 0 7362 0 3510 0 4154 0 2872 0 8278 0 8886 0 5133 0 8415 0 4679 0 8682 0 9995 0 5911 0 8460 0 5373 ans 2 5258 3 9792 1 9949 2 7843 1 6245 这里 sort B 对 B 的各列排序 sum B 对 B 的各列求和 通信原理实验讲义数字基带传输系统的仿真 13 2 5 MATLAB 编程 2 5 1 M 文件 用文本编辑器如 notepad exe 把 MATLAB 的命令及语句编辑成一个文本文件 并把文 件的扩展名定为 m 这样的文件叫 M 文件 在 MATLAB 命令行中键入 M 文件的文件名 不 包括小数点及扩展名 m 即可一次性地执行该文件中的所有命令或语句 这一点很像 DOS 中的批处理文件 BAT 只是 MATLAB 在执行 M 文件之前要先进行一些编译处理 下面是 M 文件的一个例子 M文件示例 百分号之后是注释 a randn 1 8000 分号结尾时不显示结果 L length a b sin a c L 1 同一行中可写多条语句 语句间应用逗号或分号隔开 d a j pi d是一个复矢量 j 2 重新定义 j d2 a j pi d2是实矢量 d1 a pi i d1是复矢量 u1 sin d1 u1 1 3 复数的正弦是复数 u2 sin d2 u2 1 3 实数的正弦是实数 max u2 min u2 把这段程序存为文件 test m 在 MATLAB 命令行状态下 执行 test test L 8000 c 8001 j 2 ans 7 6385 8 6868i 5 8773 9 9543i 1 9730 11 3802i ans 0 6590 0 5070 0 1702 ans 1 0000 1 0000 M 文件中可以包括所有合法的 MATLAB 命令或语句 也可以包括你已经编好的其它 M 文件名 2 5 2自定义函数 你也可以编制自己的函数 一个函数对应一个 M 文件 函数名就是 M 文件的文件名 自 定义函数的 M 文件第一行必须是如下格式 function 返回值表 函数名 输入变量表 例如 通信原理实验讲义数字基带传输系统的仿真 14 function A ph myfun x 函数示例 函数名为 myfun 文件全名必须是myfun m 本函数求复矢量 x的模与相角 A ph myfun x x为输入的复矢量 A ph是函数 myfun的返回值 执行 help myfun可看到以上注释 但不包括本行及 以后的注释 A abs x ph angle x end 定义函数的 M文件应以语句 end结尾 引用函数 myfun 的例子是 clear i c randn 1 300 i randn size a Am myfun c 只引用第一个返回值时可照此做 Amp Sita myfun c 要引用两个返回值时须照此做 函数可以无输入或输出参量 例如 function a newfun 函数示例 文件全名是 newfun m a newfun 本例无输入值 但有输出 str 真棒 真倒霉 i round rand 1 产生一个取值 1 2的随机数 a str i 取矩阵 str第i行上的所有元素 end 函数结束 在函数内部定义的变量都是本地变量 本地变量同外部变量 调用函数的外部过程所使用 的变量 使用不同的内存区 因此即使它们的标识符相同 也不会发生冲突 MATLAB 的函 数中也可以定义全局变量 格式是 global a b c 此句声明 a b c 是全局变量 global 声明必须在引用之前 2 6 循环与分支 2 6 1 FOR 循环 MATLAB 中 FOR 循环的格式是 for 循环变量 循环值表 循环体 end 例如 clear j 通信原理实验讲义数字基带传输系统的仿真 15 a 1 4 for i 1 3 a i i j end a a 1 000 1 000i 2 000 1 000i 3 000 1 000i 4 000 本例中 clear j 是 MATLAB 命令 其功能是清除对变量 j 以前的定义以使之只表示虚数运算 符 i 是循环变量 循环值表是 1 3 也即 1 2 3 循环体只有一句 a i i j 最后j 1 的 a 是为了显示结果 上面的循环等价于 a 1 3 1 3 j 循环体可以是多条语句 例如 for i 1 0 1 0 d1 i sin I d2 i cos i d3 i tan i end 此例也可这样实现 i 1 0 1 0 d1 sin i d2 cos i d3 tan i 由于 MATLAB 的矩阵运算特性 许多循环功能都可以用矢量运算代替 这样可提高编程效率 一般也能提高运行速度 循环值表也可以是矢量或矩阵 例如 i 0 for x 1 4 16 20 3 i i 1 y i x 2 end 此例等价于 x 1 4 16 20 3 y x 2 对矢量的元素平方 结果是 y 1 16 256 400 9 如果循环值表是矩阵 则循环变量是一个列矢量 循环次数 等于循环值表的列数 i 0 B randn 5 5乘5的正态随机数矩阵 for A B 循环变量 A是B的列 i i 1 B max i max A 求矢量 A的最大值 B min i min A 求矢量 A的最小值 end 循环结束 这段程序等价于 B randn 5 B max max B B min min B 通信原理实验讲义数字基带传输系统的仿真 16 2 6 2 IF 语句 IF 语句是条件执行语句 其格式为 if 条件变量 条件执行体 end 如果条件变量 的实部的所有元素都不为零 则条件执行体 被执行 否则跳过此句 也就是 说 条件变量 可以是数 矢量或矩阵 也允许是复数类型 例如 i round rand a i 0 if i a i 1 end 若i不为零则 a是字符串 i 0 否则 a的内容是字符串 i 1 条件变量 通常是一个逻辑关系表达式 表达式 逻辑关系 表达式 逻辑关系 包括 等于 小于 小于等于 及不等于 例如 i round rand a 0 if i 1 a 1 end IF 语句还可以和 elseif 及 else 一起用 i sign randn if i 1 如果 i 1 则逻辑关系表达式 i 1 的值为 真 即 1 否则为 假 即 0 a 1 elseif i 1 a 1 else a 奇怪 end a 2 6 3 WHILE 语句 WHILE语句是条件循环语句 其格式为 while 条件变量 条件执行体 end 如果条件变量 的实部的所有元素都不为零 则条件执行体 被执行 否则跳过此句 条件变 量可以是数 矢量或矩阵 也可以是复数类型的 例如 j 0 while i 888 i round rand 1000 j j 1 end 通信原理实验讲义数字基带传输系统的仿真 17 2 7 二维曲线的绘制 MATLAB 提供了丰富的绘图功能 结合本课的需要 我们在此简要介绍一下二维曲线的 绘制方法 如想进一步了解 MATLAB 绘图方面的功能 请执行 help graphics help plotxy help plotxyz help color 或者执行 MATLAB 的演示程序 demo 2 7 1函数plot 若 X Y 是两个相同长度的矢量 函数 plot X Y 将激活一个图形窗口 并画出一条以 X 为横坐标 以 Y 为纵坐标的曲线 例如 t 0 0 01 2 pi plot t sin t 绘出函数在区间上的曲线 sin t 02 使用 plot X Y 函数时若省略参量 X MATLAB 将把 Y 中元素的顺序号作为横坐标的坐 标值 也就是说此时横坐标矢量是 X 1 length Y 使用 plot 时也可加入另一个参量 S plot X Y S S 用来规定绘图时使用的颜色及绘制方式 可以选择不同的线型如实线 虚 线 点划线 波折线 也可以不划线而用不同的标记标出点的位置 MATLAB 规定 S 是长为 1 到 3 个字符的字符串 构成 S 的字符有两部分 第一部分是颜色 一个字符 第二部分是 绘制方式 一到两个字符 它们的定义如下 y yellow 点标记 m magenta o 圆圈标记 c cyan x 叉号标记 r red 加号标记 g green 星号标记 b blue 实线 w white 虚线 k black 点划线 波折线 MATLAB for Windows 所绘的图可通过剪贴板直接复制到 Microsoft Word 或其它应用程序 中 2 7 2命令hold 与 clf 在缺省状态下 执行 plot 时 MATLAB 先清除图形 窗口再行绘图 执行 hold on 后再执行 plot 时 MATLAB 将不清除图形窗口 这样我们就可以在同一图 形窗口内画多条曲线 例如 t 0 0 01 4 pi hold on plot t sin t pi 3 r plot t cos t pi 3 g plot t sin 2 t y 这一段程序在同一图形窗口中绘出了三条曲线 第一条红 色实线是 第二条绿色虚线是 第三条黄色波折线是 sin t 3cos t 3sin2t 02468101214 1 0 8 0 6 0 4 0 2 0 0 2 0 4 0 6 0 8 1 图 2 1plot 函数示例 通信原理实验讲义数字基带传输系统的仿真 18 执行 hold off 将使图形窗口变回原来的状态 单独执行 hold 而不带参数 on 或 off 将 反转图形窗口的 hold 状态 命令 clf 则是清除当前的图形窗口 它不改变 hold 的状态 2 7 3命令grid与命令axis 命令 grid on 给图形窗口打上格线 而 grid off 则是取消图形窗口中的格线 单独执行 grid 将反转格线的状态 有或无 函数 axis a 设定 X 轴与 Y 轴的坐标范围 通常 a 是一个包含四个元素的行矢量 例如 a Xmin Xmax Ymin Ymax 其元素分别代表 X 轴及 Y 轴的最大值与最小值 例 t 0 0 01 4 pi hold on plot t sin t r plot t sin 2 t b grid on axis 0 4 1 1 1 1 2 7 4 函数 semilogy 函数 semilogy 与 plot 完全一样 只是 Y 轴是对数坐标 类似还有 semilogx loglog 等 2 7 5标签 xlable str 给 X 轴加上一个以字符串 str 为内容的 标签 ylable str 则给 Y 轴加标签 title str 则是给整 个图加上一个标题 例如 Eb No dB 0 0 5 15 Eb No in dB Eb No 10 Eb No dB 10 Pe 0 5 erfc sqrt Eb No semilogy Eb No dB Pe axis 0 10 1e 9 1 xlabel Eb No in dB ylabel bit error probability title 2PSK理论误比特率曲线 2 7 6 figure与close 如果你想在同一个程序中开出多个图形窗口 可 以使用 figure 命令 单独执行 figure 后 MATLAB 将创建一个新的图形窗口 并以此作为当前图形窗口 执行 figure N 将使第 N 个图形窗口 成为当前图形窗口 如果第 N 个图形窗口不存在 则 figure N 将创建一个新窗口 新窗口 的编号不一定是 N 而是按实际已有的窗口序号顺序排列 命令 close 关闭当前图形窗口 close N 关闭第 N 个图形窗口 close all 关闭所有图 形窗口 00 511 522 533 54 1 0 8 0 6 0 4 0 2 0 0 2 0 4 0 6 0 8 1 图 2 2 绘图示例 051015 10 9 10 8 10 7 10 6 10 5 10 4 10 3 10 2 10 1 10 0 图 2 3 标签示例 通信原理实验讲义数字基带传输系统的仿真 19 2 8 其它命令 2 8 1who whos及clear 命令 who 列出所有当前已定义的变量 命令 whos 列出所有当前已定义变量的有关信息 如矩阵尺寸 元素数 字节数 是否为复数类型等 命令 clear 清除所有变量 命令 clear a b 清除变量 a 和 b 2 8 2cd path 及 which 1 命令 cd 显示当前目录 命令 cd dirname 使当前目录转到名为 dirname 的目录 cd 使当前目录转到父目录 2 path 显示 MATLAB 的搜寻路径 MATLAB 寻找命令或 M 文件时 先查找当前目 录 如果找不到 则按 path 设定的搜寻路径去找 P path 返回一个字符串 P P 的内容是搜寻路径 path P 把字符串 P 所描述的路径作为当前的搜寻路径 path path P 把 P 追加到 当前搜寻路径中 P 在最后 path P path 把 P 加入到当前搜寻路径中 P 在最前 3 which 函数或命令名 显示指定的命令或函数所在位置 例如 which max max is a built in function 表明函数 max是一个内置的函数 而 which mean matlab toolbox matlab datafun mean m 表明函数 mean是由 M文件 mean m定义的 该文件的存放路径的位置 通信原理实验讲义数字基带传输系统的仿真 20 3 计算机仿真计算机仿真的一般方法的一般方法 3 1 信号及系统在计算机中的表示 从数学的角度来看 信息从一地传送到另一地的整个过程或者其各个环节不外乎是一些码 或信号的变换过程 例如信源压缩编码 纠错编码 AMI 编码 扰码等属于码层次上的变换 而基带成形 滤波 调制等则是信号层次上的 码的变换是易于用软件来仿真的 要仿真信号 的变换 必须解决信号与信号系统在软件中表示的问题 3 1 1 时域取样及频域取样取样 一般来说 任意信号是定义在时间区间上的连续函数 但所有计算机的s t CPU 都只能按指令周期离散运行 同时计算机也不能处理这样一个时间段 为此我 们把按区间截短为 再对按时间间隔均匀取样得到个样值 s t T 2 T 2 st T st T t T t 仿真时我们用这个样值集合来表示信号 显然反映了仿真系统对信号波形的分辨率 s t t 越小则仿真的精确度越高 据通信原理所学 信号被取样以后的频谱是频率的周期函数 t 其重复周期是 如果信号的最高频率为 那么必须有才能保证不发生混叠 1 t fHf t H 1 2 失真 我们称为仿真系统的系统带宽 如果我们的仿真程序中设定的采样间隔是B t s 1 2 那么我们不能用此仿真程序来研究带宽大于的信号或系统 tBs 此外 信号的频谱通常来说也是定义在频率区间上的连续函数 所s t S f 以仿真频域特性时 我们也必须把截短并取样 考虑到系统带宽是 我们把频域的截 S fBs 短区间设计为 然后再按间隔均匀取样得到个样值 反映了仿真系统在 BB ss f 2B f s f 频域上的分辨率 频域离散的信号对应到时域是一个周期信号 其周期为 类似前面的分 1 f 析 如果我们的仿真程序中设定的采样间隔是 那么我们就不能仿真截短时间超过的 f 1 f 信号 考虑到时域截短时间为 T 我们把频域的取样间隔设计为 这样一来 时域的 f T 1 总取样点数及频域的总取样点数都相等 为 要提高仿真的精度 就必须降低时域N t f 1 取样间隔及频域取样间隔 也就是要加大总取样点数 N 这说明仿真的精度与仿真系 t f 统的运算量直接有关 为了处理上的方便 我们今后规定采样点数 N 为 2 的整幂 举例来说 假如设计要求的 系统带宽为 1MHz 频域最小分辨率为 通信原理实验讲义数字基带传输系统的仿真 21 10KHz 那么据此可求得 取 对应的其它参数为 N B f s 2 200 N 256BMHz s 1 f B N KHz s 2 78 T f s 1 128 t T N s 05 3 1 2 频域分析 限于篇幅 我们将不向大家介绍 MATLAB 中关于傅里叶变换的有关函数 为了方便仿真 我们利用 MATLAB 的提供的函数编写了两个函数 t2f 及 f2t t2f 的功能是作傅氏变换 f2t 的功能是作傅氏反变换 它们的引用格式分别为 X t2f x 及 x f2t X 其中 x 是时域信号 截短并采样所得的取样值矢量 X 是对的傅氏变换截短并采样所得的取样值x t x t X f 矢量 这两个函数存放在 matlab our prg 目录中 我们关心的另一个指标是信号的功率谱密度 任意信号的功率谱的定义是s t 其中是截短后的傅氏变换 是的能量谱 Pf Sf T s T T lim 2 Sf T s t Sf T 2 st T 是在截短时间内的功率谱 对于仿真系统 若 x 是时域取样值矢量 X 是对应 Sf T T 2 st T 的傅氏变换 那么 x 的功率谱便为矢量 P X conj X T 3 2 随机信号的产生 3 2 1 高斯噪声的产生 由于函数 randn 1 N 产生 N 个互不相关的 均值为零 方差为 1 的高斯随机数 所以 可用它来产生白高斯噪声 设仿真系统的取样点数是 N 系统带宽为 矢量Bs x n0 Bs randn 1 N 的总功率为 n0 Bs 最高频率分量为 Bs 并且各样点的值互不相关 故它代表双边功率谱密度为的白噪声 n W Hz 0 2 3 2 2 随机码序列的产生 语句 round rand 1 M 产生 M 个取值 1 0 等概的随机码 函数 round 表示四舍五入 函数 rand 产生均匀分布于区间的随机数 0 1 语句 sign randn 1 M 产生 M 个取值 1 等概的随机码 函数 sign x 对矢量 x 的元素 取正负号 而高斯数 randn 取正负值的概率是相等的 3 2 3 产生数字基带信号的一般方法 G f g t s ta g t iT is i imp tat iT is i 图 3 1 PAM 信号的等效模型 通信原理实验讲义数字基带传输系统的仿真 22 一般来说 随机数字信号可以直接或间接表示成 PAM 信号 请参阅通信原理课本 PAM 信号指所有形如的信号 它可以等价地表示为图 3 1 s ta g tiT is i 故此对各种不同的数字信号 我们都可以用相同的方法来产生 1 产生随机码序列矢量 a 为了方便起见 我们规定 a 的长度 M 是 2 的整幂 1 产生冲击序列信号 imp t 设矢量 imp 代表信号 imp 可如下产生 imp t imp zeros 1 N imp 1 L N a dt 其中 N 是 imp 的矢量长度 M 是码元矢量 a 中的码元数 L 是每码元内的样点数 我们规定 M N 都是 2 的整幂 于是 L 自然也是 2 的整幂 3 产生数字信号s t 设矢量 s 代表数字信号 矢量 g 代表脉冲波形 矢量 G 代表其频谱 s t g t G f 那么 s 的产生方法是 s conv imp g 其中 函数 conv 表示卷击 卷击后 s 的长度是 length imp length g 1 扣除 延迟时间及拖尾时间收 数字信号为 ii find g max g s s 1 N ii 1 也可用频域的方法产生数字信号 s t s f2t t2f imp G 注意此时 imp 的点数应与 g 或 G 相同 若 g 的宽度小于 imp 则应用零补齐 3 2 4 NRZ 及 RZ 信号的产生 对于采用归零 RZ 及不归零 NRZ 矩形脉冲波形的数字信号 可以用简单的方法信 号矢量 s 设 a 是码元矢量 N 是总取样点数 M 是总码元数 L 是每个码元内的点数 那么 NRZ 信号可这样获得 s zeros 1 N for ii 1 L s ii 0 M 1 L a end 对于 若 Rt 是要求的占空比 dt 是仿真系统的时域采样间隔 则 RZ 信号的产生方法是 s zeros 1 N for ii 1 Rt dt s ii 0 M 1 L a end 通信原理实验讲义数字基带传输系统的仿真 23 3 3 眼图 眼图是数字信号在示波器上重复扫描得到的显示图形 若示波器的扫描范围是 Na 个码元 那么画眼图的方法是 tt 0 dt Na L dt hold on for ii 1 Na L N Na L plot tt s ii 1 Na L end 3 4 误码率 3 4 1 取样判决 设矢量 a 表示发送的码序列 矢量 y 表示在判决点观测到的叠加有噪
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《保险学财产保险》课件
- 《制度制定讲座昆泰》课件
- 幼儿安全课件滑滑梯
- 三年级科学下册一天气与植物2天气气象教案新人教版
- 小学生校园安全教育培训制度
- 企业采购业务培训课件
- 进场培训课件
- 钢丝网培训课件下载
- 双分支选择结构if-else语句.课件x
- 上网安全课件
- 政治-2025年八省适应性联考模拟演练考试暨2025年四川省新高考教研联盟高三年级统一监测试题和答案
- 2024年中国医药研发蓝皮书
- 坍塌、垮塌事故专项应急预案(3篇)
- 2024年融媒体中心事业单位考试工作人员另选录用55人内部选题库及参考答案(研优卷)
- 陕西省安康市2023-2024学年高一上学期期末考试 生物 含解析
- WPS Office办公软件应用教学教案
- 安徽省合肥中学2025届高三第一次模拟考试数学试卷含解析
- 糖尿病药物治疗分类
- 2024年时政热点知识竞赛试卷及答案(共四套)
- 幼儿园后勤主任年终总结
- 除颤仪使用护理查房
评论
0/150
提交评论