基于matlab的码型转换
基于MATLAB的HDB3码生成器设计
“ 0 ”码 不 会 出 现 改 变 , 而 … 1’ 码 会 出现 改 变 ,这 个 改 变 是 在 + 】 与一 1 之 间交 替 变 化 。一 般 情 况 下 脉 冲 的 宽 度 和 码 元 的 宽 度 是 1比 2的 关 系 ,A M I 码 码 型 中 的 正 、 负 极 脉 冲 会 轮 流 产 生 , 因 此 不 会 存 在 无 直 流 分 量 ,低 频 分量 也很 少 。A M I 码 实 现 反 变 换 简 单 易操 作 , 当信 码 需 要 重 新形 成 的 时候 ,要 把 信 号实 现 整 流 处 理 , 此 时需 要把 “ 一 1 ”变 为 “ + 1 ”, 从 而 形 成 单 极 性 码 。 然 而 A M I 码 也 存 在 着 一 些 不 足 ,这 个 不 足 之 处 指 的 是 当原 信 码 中有 长 串 的 “ 0 ”出现 的时 候 ,信 号 中 的 电平 就 会 出现 一 段 时 间 保持 不变 , 从 而 会 引起 定 时 信 号 的提 取 不 太 容 易实 现 ,面 对 这 个 长 串 “ 0 ” 码 问题 的 解 决 需 要 采 取 的 措 施 就 是 选 择 用 H D B 3码 。H D B 3码 编 码 的原理图如图 l 所示 。 H D B 3 码 能够 实现 将 连 着 的 4 个 0进 行 替换 ,如 果 连 接 的 “ 0 ”
中B 码 以及 “ 1 ” 码 的正 负 交 替 变 化 都 是 以 V 脉 冲 的极 性 为 依 据 的 。
其 中的 V或者 B符号的 引入原 因是说 明这个非 “ 0 ”码在初始 的
信码 “ 0 ”码 所 得 到 的 。
消 息码
传输 码型 的选 择就有很 重要 的意义价值 了。数字线路传 输码 型 的选 择需要 考虑 的原 则是适用 性强 以及 足够经济 实惠。单极 性 不 归零码简 称为 N R Z码 。在数 字基 带信息 中使 用 比较频 繁 的码
基于Matlab的脉冲编码调制(PCM)系统设计与仿真之令狐文艳创作
课程设计任务书令狐文艳学生姓名:专业班级:指导教师:工作单位:题目: 脉冲编码调制(PCM)的实现初始条件:1、MATLAB软件;2、脉冲编码调制相关知识。
要求完成的主要任务:1、任务实现脉冲编码调制(PCM)技术的三个过程:采样、量化与编码。
2、要求用仿真软件对其进行验证,使其满足以下要求:(1)模拟信号的最高频率限制在4KHZ以内;(2)分别实现64级电平的均匀量化和A压缩率的非均匀量化;(3)按照13折线A律特性编成8位码。
时间安排:第1,2天:分析题目,方案设计;第3,4,5天:软件设计;第6,7天:系统仿真;第8天:答辩,完成设计说明书。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要IAbstractII1 绪论12 MATLAB简介22.1 MATLAB软件简介22.2 MATLAB程序设计方法23 PCM脉冲编码原理43.1 模拟信号的抽样及频谱分析43.1.1 信号的采样43.1.2 抽样定理43.1.3采样信号的频谱分析53.2 量化53.2.1 量化的定义53.2.2 量化的分类63.2.3 MATLAB的A律13折线量化123.3 PCM编码123.3.1 编码的定义123.3.2 码型的选择133.3.3 PCM脉冲编码的原理134 PCM的MATLAB实现154.1 PCM抽样的MATLAB实现154.2PCM量化的MATLAB实现184.2.1 PCM均匀量化的MATLAB实现184.2.2 PCM A律非均匀量化的MATLAB实现204.3PCM A律13折线编码的MATLAB实现225结果分析及总结25参考文献26摘要本设计结合PCM的抽样、量化、编码原理,利用MATLAB软件编程和绘图功能,完成了对脉冲编码调制(PCM)系统的建模与仿真分析。
课题中主要分为三部分对脉冲编码调制(PCM)系统原理进行建模与仿真分析,分别为采样、量化和编码原理的建模仿真。
毕业设计(论文)基于matlab的数字基带通信系统仿真
基于matlab的数字基带通信系统仿真1.课程设计的目的(1)增加对仿真软件的认识,学会对各种软件的操作和使用方法(2)加深理解数字基带通信系统的概念(3)初步掌握系统的设计方法,培养独立工作能力2.设计方案论证2.1数字基带传输系统在数字传输系统中,其传输的对象通常是二进制数字信号,它可能是来自计算机、电传打字机或其它数字设备的各种数字脉冲,也可能是来自数字终端的脉冲编码调制(PCM)信号。
这些二进制数字信号的频带范围通常从直流和低频开始,直到某一频率m f ,我们称这种信号为数字基带信号。
在某些有线信道中,特别是在传输距离不太远的情况下,数字基带信号可以不经过调制和解调过程在信道中直接传送,这种不使用调制和解调设备而直接传输基带信号的通信系统,我们称它为基带传输系统。
而在另外一些信道,特别是无线信道和光信道中,数字基带信号则必须经过调制过程,将信号频谱搬移到高频处才能在信道中传输,相应地,在接收端必须经过解调过程,才能恢复数字基带信号。
我们把这种包括了调制和解调过程的传输系统称为数字载波传输系统。
数字基带传输系统的模型如图 1所示,它主要包括码型变换器、发送滤波器、信道、接收滤波器、均衡器和取样判决器等部分。
图1 数字基带传输系统模型1.2 数字基带信号1.2.1数字基带信号波形对不同的数字基带传输系统,应根据不同的信道特性及系统指标要求,选择不同的数字脉冲波形。
原则上可选择任意形状的脉冲作为基带信号波形,如矩形脉冲、三角波、高斯脉冲及升余弦脉冲等。
但实际系统常用的数字波形是矩形脉冲,这是由于矩形脉冲纤数字传输系统中的线路传输码型。
此外,CMI 码和曼彻斯特码一样都是将一位二进制码用一组两位二进制码表示,因此称其为1B2B 码。
(5)4B/3T 码4B/3T 码是1B/1T 码的改进型它把4 个二进制码元变换为3个三进制码元。
显然,在相同信息速率的条件下,4B/3T 码的码元传输速率要比1B/1T 码的低,因而提高了系统的传输效率。
基于MATLABSimulink的基带传输系统的仿真-(1)
基于MATLABSimulink的基带传输系统的仿真-(1)通信工程专业《通信原理》课程设计题目基于MATLAB/Simulink的基带传输系统的仿真学生姓名张莎学号1113024109所在院(系)陕西理工学院物理与电信工程学院专业班级通信工程专业1104 班指导教师侯宝生合作者王翊东鲁少龙完成地点陕西理工学院物理与电信工程学院实验室2014年 3 月 12 日通信原理课程设计任务书院(系) 物电学院专业班级通信1104 学生姓名张莎一、通信原理课程设计题目基于MATLAB/Simulink的基带传输系统的仿真二、通信原理课程设计工作自2014年2月24日起至2014年3月14日止三、通信原理课程设计进行地点: 物电学院实验室四、通信原理课程设计的内容要求:1建立一个基带传输系统模型,选用合适基带信号,发送滤波器为平方根升余弦滤波器,滚降系数为0.5,信道为加性高斯信道,接收滤波器与发送滤波器相匹配。
要求观察接收信号眼图,并设计接收机采样判决部分,对比发送数据与恢复数据波形,并统计误码率。
另外,对发送信号和接收信号的功率谱进行估计,假设接收定时恢复是理想的。
2.设计题目的详细建模仿真过程分析和说明,仿真的结果可以以时域波形,频谱图,星座图,误码率与信噪比曲线的形式给出。
课程设计说明书中应附仿真结果图及仿真所用到的程序代码(MATLAB)或仿真模型图(Simulink/SystemView)。
如提交仿真模型图,需提交相应模块的参数设置情况。
3.每人提交电子版和纸质的说明书及源程序代码或仿仿真文件。
参考文献:[1]邓华.MATLAB通信仿真及其应用实例详解[M].人民邮电出版社.2003年[2]郑智琴.Simulink电子通信仿真与应用[M].国防工业出版社.2002年[3]赵鸿图.通信原理MATLAB仿真教程[M].人民邮电出版社.2010年[4]刘学勇.详解MATLAB/Simulink通信系统建模与仿真[M].电子工业出版社.2011年[5]达新宇.通信原理实验与课程设计[M].北京邮电大学出版社.2005年[6]邵玉斌.MATLAB/Simulink通信系统建模与仿真实例分析[M].清华大学出版社.2008年指导教师侯宝生系(教研室)通信工程系接受论文 (设计)任务开始执行日期2014年2月24日学生签名基于MATLAB/Simulin的基带传输系统的仿真张莎(陕西理工学院物理与电信工程学院通信1104班,陕西汉中723003)指导教师:侯宝生[摘要]未经调制的数字信号所占据的频谱是从零频或者很低频率开始,称为数字基带信号,不经载波调制而直接传输数字基带信号的系统,称为数字基带传输系统。
基于MATLAB的线性分组码课程设计论文
目录TOC \o "1-3" \h \u HYPERLINK \l _Toc6750 前言.... PAGEREF _Toc6750 1HYPERLINK \l _Toc26804 工程概况................ PAGEREF _Toc26804 1HYPERLINK \l _Toc14622 正文.................... PAGEREF _Toc14622 2 HYPERLINK \l _Toc4430 3.1设计的目的和意义... PAGEREF _Toc4430 2HYPERLINK \l _Toc31075 3.1.1设计的目的. PAGEREF _Toc31075 2HYPERLINK \l _Toc18535 3.1.2设计的意义. PAGEREF _Toc18535 2 HYPERLINK \l _Toc31236 3.2 线性分组码的编码与译码原理 PAGEREF _Toc31236 2 HYPERLINK \l _Toc11233 3.2.1线性分组码的编码原理 PAGEREF _Toc11233 2HYPERLINK \l _Toc6682 3.2.2 线性分组码的译码原理 PAGEREF _Toc6682 3 HYPERLINK \l _Toc31791 3.3 2PSK的调制与解调原理 PAGEREF _Toc31791 4 HYPERLINK \l _Toc26402 3.3.1调制的原理. PAGEREF _Toc26402 4HYPERLINK \l _Toc27747 3.3.2解调的原理. PAGEREF _Toc27747 4 HYPERLINK \l _Toc23880 3.4 不同信噪比是的测试结果 PAGEREF _Toc23880 5 HYPERLINK \l _Toc20433 3.4.1 信噪比为1时 PAGEREF _Toc20433 5HYPERLINK \l _Toc4861 3.4.2 信噪比为5时. PAGEREF _Toc4861 5HYPERLINK \l _Toc31183 3.4.3 信噪比为10时 PAGEREF _Toc31183 6HYPERLINK \l _Toc29253 3.4.4译码时当检测到错码结果如图 PAGEREF _Toc29253 6 HYPERLINK \l _Toc2127 致谢...................... PAGEREF _Toc2127 7HYPERLINK \l _Toc30045 参考文献................ PAGEREF _Toc30045 7前言近年来,随着计算机、卫星通信及高速数据网的飞速发展,数据的交换、数据的交换理和存储技术得到了广泛的应用,人们对数据传输和存储系统的可靠性提出了越来越高的要求。
基于MATLAB的信号与系统实验教程
基于MATLAB的信号与系统实验教程第一部分 MATLAB基础第1章 MATLAB环境1.1 MATLAB界面图1.1 MATLAB主界面图1.2 Workspace图1.3 MATLAB.m文件编辑窗口界面1.2 文件类型图1.4 设置路径图1.5 例1-1运行结果1.3 系统和程序控制指令1.4 练习第2章 数据类型与数学运算2.1 数值、变量和表达式2.1.1 数值的记述2.1.2 变量命名规则2.1.3 运算符和表达式2.2 数组、矩阵及其运算2.2.1 复数和复数矩阵2.2.2 数组和矩阵的运算2.2.3 特殊矩阵(Specialized matrices)2.3 关系和逻辑运算2.4 练习第3章 数值计算与符号计算3.1 线性代数与矩阵分析3.1.1 线性代数3.1.2 特征值分解3.1.3 奇异值分解3.1.4 矩阵函数3.2 线性方程组求解3.2.1 确定性线性方程组求解3.2.2 线性最小二乘问题的方程求解3.3 数据分析函数图3.1 例3-4运行结果3.4 符号计算图3.2 数值型与符号型数据转换关系3.5 练习第4章 绘图4.1 基本绘图指令4.1.1 plot的基本调用格式图4.1 例4-1运行结果4.1.2 stem: 离散数据绘制(火柴杆图)图4.2 例4-2运行结果4.1.3 polar: 极坐标图图4.3 例4-3运行结果4.2 各种图形标记、控制指令图4.4 例4-4运行结果4.2.1 图的创建与控制4.2.2 轴的产生与控制4.2.3 分格线(grid)、坐标框(box)、图保持(hold)4.2.4 图形标志4.3 其他常用绘图指令4.3.1 其他类型图的绘制图4.5 例4-5运行结果图4.6 例4-6运行结果简易绘图指令图4.7 例4-7运行结果4.4 练习第5章 SIMULINK5.1 SIMULINK的基本使用方法图5.1 Simulink Library Browser窗口图5.2 Pulse Generator模块的参数设置5.2 SIMULINK模型概念及基本模块介绍图5.4 SIMULINK模型的一般结构5.2.1 常用的sources——信号源模块5.2.2 常用的sinks——信号显示与输出模块图5.5 示波器纵坐标设置对话框图5.6 示波器属性对话框5.2.3 math operations——数学运算单元模块5.2.4 continuous——连续系统模块5.2.5 discrete——离散系统模块5.3 SIMULINK模型的仿真5.3.1 仿真参数设置图5.7 仿真设置对话框5.3.2 建立子系统图5.8 例5-2的SIMULINK模型图5.9 例5-2的子系统模型图5.10 例5-2仿真输出波形5.4 练习第6章 M函数和工具箱6.1 M函数6.2 工具箱图6.1 演示程序中的工具箱(Toolbox)使用帮助6.3 练习第7章 MATLAB实用技术遴选7.1 图形用户界面设计7.1.1 设计原则与设计步骤7.1.2 界面与控件介绍图7.1 标准菜单样式7.1.3 GUI实例分析。
基于MATLAB的模拟信号数字化系统的研究与仿真
脉冲编码调制(PCM)原理:
图 1-9 脉冲编码调制示意图
PCM 系统的原理方框图如下图所示,同种,输入的模拟信号 m(t)经抽样、量化、
编码后变换成数字信号,经心道传送到接收端的译码器,由译码器还原出抽样值,再经过
定理内容:抽样定理在时域上可以表述为:对于一个频带限制在(0,fH)Hz 内的时间 连续信号 f(t),如果以 Ts≤1/(2fH)秒间隔对其进行等间隔抽样,则 f(t)将被所得到的 抽样值完全确定。模拟信号的抽样过程如下图。
图 1-2 模拟信号抽样的过程示意图
下图分析可知模拟信号抽样过程中各个信号的波形与频谱。
模拟信号数字化系统的研究与仿真
5
通信原理课程设计
图 1-4 两种情况下的抽样信号频谱分析
应该注意的一点是:抽样频率并不是越高越好。只要能满足抽样频率大于奈奎斯特频 率,并留有一定的防卫带即可。
1.1.2 带通信号的抽样定理
实际中遇到的许多信号时带通型信号,模拟信号的频道限制在 fL~fH 之间,fL 为信号 最低频率,fH 为最高频率。而且当 fH>B,其中 B=fH-fL 时,该信号通常被成为带通型信号, 其中 B 为带通信号的频带。
对于带通信号,如果采用低通抽样定理的抽样速率 fs≥2fh,对频率限制在 fL 与 fH 之间 的带通型信号抽样,肯定能满足频谱不混叠的要求,如图所示。
模拟信号数字化系统的研究与仿真
6
通信原理课程设计
图 1-5 带通信号的抽样频谱
定理内容:一个带通信号 f(t),其频率限制在 fL 与 fH 之间,带宽为 B=fh-fl,如果 最小抽样速率 fs=2fh/n,n 是一个不超过 fh/B 的最大整数,那么 f(t)就可以完全由抽 样值确定。 下面两种情况说明:
基于matlab的数字信号调制与解调
基于matlab的数字信号调制与解调一matlab常用函数1、特殊变量与常数ans 计算结果的变量名computer 确定运行的计算机eps 浮点相对精度Inf 无穷大I 虚数单位inputname 输入参数名NaN 非数nargin 输入参数个数nargout 输出参数的数目pi 圆周率nargoutchk 有效的输出参数数目realmax 最大正浮点数realmin 最小正浮点数varargin 实际输入的参量varargout 实际返回的参量操作符与特殊字符+ 加- 减* 矩阵乘法 .* 数组乘(对应元素相乘)^ 矩阵幂 .^ 数组幂(各个元素求幂)\ 左除或反斜杠/ 右除或斜面杠 ./ 数组除(对应元素除)kron Kronecker张量积: 冒号() 圆括[] 方括 . 小数点 .. 父目录 ... 继续, 逗号(分割多条命令); 分号(禁止结果显示)% 注释! 感叹号' 转置或引用= 赋值== 相等<> 不等于& 逻辑与| 逻辑或~ 逻辑非xor 逻辑异或2、基本数学函数abs 绝对值和复数模长acos,acodh 反余弦,反双曲余弦acot,acoth 反余切,反双曲余切acsc,acsch 反余割,反双曲余割angle 相角asec,asech 反正割,反双曲正割secant 正切asin,asinh 反正弦,反双曲正弦atan,atanh 反正切,双曲正切tangent 正切atan2 四象限反正切ceil 向着无穷大舍入complex 建立一个复数conj 复数配对cos,cosh 余弦,双曲余弦csc,csch 余切,双曲余切cot,coth 余切,双曲余切exp 指数fix 朝0方向取整floor 朝负无穷取整*** 最大公因数imag 复数值的虚部lcm 最小公倍数log 自然对数log2 以2为底的对数log10 常用对数mod 有符号的求余nchoosek 二项式系数和全部组合数real 复数的实部rem 相除后求余round 取整为最近的整数sec,sech 正割,双曲正割sign 符号数sin,sinh 正弦,双曲正弦sqrt 平方根tan,tanh 正切,双曲正切3、基本矩阵和矩阵操作blkding 从输入参量建立块对角矩阵eye 单位矩阵linespace 产生线性间隔的向量logspace 产生对数间隔的向量numel 元素个数ones 产生全为1的数组rand 均匀颁随机数和数组randn 正态分布随机数和数组zeros 建立一个全0矩阵colon) 等间隔向量cat 连接数组diag 对角矩阵和矩阵对角线fliplr 从左自右翻转矩阵flipud 从上到下翻转矩阵repmat 复制一个数组reshape 改造矩阵roy90 矩阵翻转90度tril 矩阵的下三角triu 矩阵的上三角dot 向量点集cross 向量叉集ismember 检测一个集合的元素intersect 向量的交集setxor 向量异或集setdiff 向是的差集union 向量的并集数值分析和傅立叶变换cumprod 累积cumsum 累加cumtrapz 累计梯形法计算数值微分factor 质因子inpolygon 删除多边形区域内的点max 最大值mean 数组的均值mediam 中值min 最小值perms 所有可能的转换polyarea 多边形区域primes 生成质数列表prod 数组元素的乘积rectint 矩形交集区域sort 按升序排列矩阵元素sortrows 按升序排列行std 标准偏差sum 求和trapz 梯形数值积分var 方差del2 离散拉普拉斯diff 差值和微分估计gradient 数值梯度cov 协方差矩阵corrcoef 相关系数conv2 二维卷积conv 卷积和多项式乘法filter IIR或FIR滤波器deconv 反卷积和多项式除法filter2 二维数字滤波器cplxpair 将复数值分类为共轭对fft 一维的快速傅立叶变换fft2 二维快速傅立叶变换fftshift 将FFT的DC分量移到频谱中心ifft 一维快速反傅立叶变换ifft2 二维傅立叶反变换ifftn 多维快速傅立叶变换ifftshift 反FFT偏移nextpow2 最靠近的2的幂次unwrap 校正相位角多项式与插值conv 卷积和多项式乘法roots 多项式的根poly 具有设定根的多项式polyder 多项式微分polyeig 多项式的特征根polyfit 多项式拟合polyint 解析多项式积分polyval 多项式求值polyvalm 矩阵变量多项式求值residue 部分分式展开interp1 一维插值interp2 二维插值interp3 三维插值interpft 使用FFT的一维插值interpn 多维插值meshgrid 为3维点生成x和y的网格ndgrid 生成多维函数和插值的数组pchip 分段3次Hermite 插值多项式ppval 分段多项式的值spline 3次样条数据插值绘图函数bar 竖直条图barh 水平条图hist 直方图histc 直方图计数hold 保持当前图形loglog x,y对数坐标图pie 饼状图plot 绘二维图polar 极坐标图semilogy y轴对数坐标图semilogx x轴对数坐标subplot 绘制子图bar3 数值3D竖条图bar3h 水平3D条形图comet3 3D 慧星图cylinder 圆柱体fill3 填充的3D多边形plot3 3维空间绘图quiver3 3D震动(速度)图slice 体积薄片图sphere球stem3 绘制离散表面数据wate***ll 绘制瀑布trisurf三角表面clabel 增加轮廓标签到等高线图中datetick 数据格式标记grid 加网格线gtext 用鼠标将文本放在2D图中legend 图注plotyy 左右边都绘Y轴title 标题xlabel X轴标签ylabel Y轴标签zlabel Z轴标签contour 等高线图contourc 等高线计算contourf 填充的等高线图hidden 网格线消影meshc 连接网格/等高线mesh 具有参考轴的3D网格peaks 具有两个变量的采样函数surf 3D阴影表面图su***ce 建立表面低层对象surfc 海浪和等高线的结合surfl 具有光照的3D阴影表面trimesh 三角网格图二Matlab常用指令1、通用信息查询(General information)demo 演示程序help 在线帮助指令helpbrowser 超文本文档帮助信息helpdesk 超文本文档帮助信息helpwin 打开在线帮助窗info MATLAB 和MathWorks 公司的信息subscribe MATLAB 用户注册ver MATLAB 和TOOLBOX 的版本信息version MATLAB 版本whatsnew 显示版本新特征2、工作空间管理(Managing the workspace)clear 从内存中清除变量和函数exit 关闭MATLAB load 从磁盘中调入数据变量pack 合并工作内存中的碎块quit 退出MATLAB save 把内存变量存入磁盘who 列出工作内存中的变量名whos 列出工作内存中的变量细节workspace 工作内存浏览器3 、管理指令和函数(Managing commands and functions)edit 矩阵编辑器edit 打开M 文件inmem 查看内存中的P 码文件mex 创建MEX 文件open 打开文件pcode 生成P 码文件type 显示文件内容what 列出当前目录上的M、MAT、MEX 文件which 确定指定函数和文件的位置4 、搜索路径的管理(Managing the seach patli)addpath 添加搜索路径rmpath 从搜索路径中删除目录path 控制MATLAB 的搜索路径pathtool 修改搜索路径5、指令窗控制(Controlling the command window)beep 产生beep 声echo 显示命令文件指令的切换开关diary 储存MATLAB 指令窗操作内容format 设置数据输出格式more 命令窗口分页输出的控制开关6、操作系统指令(Operating system commands)cd 改变当前工作目录computer 计算机类型copyfile 文件拷贝delete 删除文件dir 列出的文件dos 执行dos 指令并返还结果getenv 给出环境值ispc MATLAB 为PC(Windows)版本则为真isunix MATLAB 为Unix 版本则为真mkdir 创建目录pwd 改变当前工作目录unix 执行unix 指令并返还结果vms 执行vms dcl 指令并返还结果web 打开web 浏览器! 执行外部应用程序三Matlab运算符和特殊算符1、算术运算符(Arithmetic operators)+ 加- 减* 矩阵乘 .* 数组乘^ 矩阵乘方 .^ 数组乘方\ 反斜杠或左除/ 斜杠或右除 ./或.\ 数组除张量积[注]本表第三栏括号中的字符供在线救助时help 指令引述用2、关系运算符(Relational operators)= = 等号~= 不等号< 小于> 大于<= 小于或等于>= 大于或等于3、逻辑操作(Logical operators)& 逻辑与| 逻辑或~ 逻辑非xor 异或any 有非零元则为真all 所有元素均非零则为真4、特殊算符(Special characters):冒号( ) 圆括号[ ] 方括号{ } 花括号@ 创建函数句柄 . 小数点 . 构架域的关节点 .. 父目录? 续行号, 逗号; 分号% 注释号! 调用操作系统命令= 赋值符号ˊ引号ˊ复数转置号.ˊ转置号[,] 水平串接[;] 垂直串接( ),{ },. 下标赋值( ),{ },. 下标标识subsindex 下标标识四Matlab编程语言结构控制语句(Control flow)break 终止最内循环case 同switch 一起使用catch 同try 一起使用continue 将控制转交给外层的for 或while 循环else 同if 一起使用elseif 同if 一起使用end 结束for,while,if 语句for 按规定次数重复执行语句if 条件执行语句otherwise 可同switch 一起使用return 返回switch 多个条件分支try try-cathch 结构while 不确定次数重复执行语句2、计算运行(Evaluation and execution)assignin 跨空间赋值builtin 执行内建的函数eval 字符串宏指令evalc 执行MATLAB 字符串evalin 跨空间计算串表达式的值feval 函数宏指令run 执行脚本文件3、脚本文件、函数及变量(Scripts,function,and variables)exist 检查变量或函数是否被定义function 函数文件头global 定义全局变量isglobal 若是全局变量则为真iskeyword 若是关键字则为真mfilename 正在执行的M 文件的名字persistent 定义永久变量script MATLAB 命令文件4、宗量处理(Augument handling)inputname 实际调用变量名nargchk 输入变量个数检查nargin 函数输入宗量的个数nargout 函数输出宗量的个数nargoutchk 输出变量个数检查varagin 输入宗量varagout 输出宗量5、信息显示(Message display)disp 显示矩阵和文字内容display 显示矩阵和文字内容的重载函数error 显示错误信息fprintf 把格式化数据写到文件或屏幕lasterr 最后一个错误信息lastwarn 最后一个警告信息sprintf 按格式把数字转换为串warning 显示警告信息6 、交互式输入(Interactive input) input 提示键盘输入keyboard 激活键盘做为命令文件pause 暂停uicontrol 创建用户界面控制uimenu 创建用户界面菜单五Matlab基本矩阵函数和操作1、基本矩阵(Elementary matrices)eye 单位阵linspace 线性等分向量logspace 对数等分向量meshgrid用于三维曲面的分格线坐标ones 全1 矩阵rand 均匀分布随机阵randn 正态分布随机阵repmat 铺放模块数组zeros 全零矩阵: 矩阵的援引和重排2、矩阵基本信息(Basic array information)disp 显示矩阵和文字内容isempty 若是空矩阵则为真isequal 若对应元素相等则为1 islogical 尤其是逻辑数则为真isnumeric 若是数值则为真length 确定向量的长度logical 将数值转化为逻辑值ndims 数组A的维数size 确定矩阵的维数3、矩阵操作(Matrix manipulateion)blkdiag 块对角阵串接diag 创建对角阵,抽取对角向量end 数组的长度,即最大下标find 找出非零元素1 的下标fliplr 矩阵的左右翻转flipud 矩阵的上下翻转flipdim 交换对称位置上的元素ind2sub 据单下标换算出全下标reshape 矩阵变维rot90 矩阵逆时针90°旋转sub2idn 据全下标换算出单下标tril 抽取下三角阵triu 抽取上三角阵4、特殊变量和常数(Special variables and constants)ans 最新表达式的运算结果eps 浮点相对误差i,j 虚数单位inf 或Inf 无穷大isfinite 若是有限数则为真isinf 若是无穷大则为真isnan 若为非数则为真NaN 或nan 非数pi 3.1415926535897?. realmax 最大浮点数realmin 最小正浮点数why 一般问题的简明答案5、特殊矩阵(Specialized matrices)compan 伴随矩阵gallery 一些小测试矩阵hadamard Hadamard 矩阵hankel Hankel 矩阵hilb Hilbert 矩阵invhilb 逆Hilbert 矩阵magic 魔方阵pascal Pascal 矩阵rosser 典型对称特征值实验问题toeplitz Toeplitz 矩阵vander Vandermonde 矩阵wilkinson Wilkinson's 对称特征值实验矩阵六Matlab基本数学函数1、三角函数(Trigonometric)acos 反余弦acosh 反双曲余弦acot 反余切acoth 反双曲余切acsc 反余割acsch 反双曲余割asec 反正割asech 反双曲正割asin 反正弦asinh 反双曲正弦atan 反正切atanh 反双曲正切atan2四象限反正切cos 余弦cosh 双曲余弦cot 余切coth 双曲余切csc 余割csch 双曲余割sec 正割sech 双曲正割sin 正弦sinh 双曲正弦tan 正切tanh 双曲正切2、指数函数(Exponential)exp 指数log 自然对数log10 常用对数log2 以2 为底的对数nestpow2 最近邻的2 的幂pow2 2 的幂sqrt 平方根3、复数函数(Complex)abs 绝对值angle 相角complex 将实部和虚部构成复数conj 复数共轭cplxpair 复数阵成共轭对形式排列imag 复数虚部isreal 若是实数矩阵则为真real 复数实部unwrap 相位角360°线调整4、圆整和求余函数(Rounding and remainder)ceil 朝正无穷大方向取整fix 朝零方向取整floor 朝负无穷大方向取整mod 模数求余rem 求余数round 四舍五入取整sign 符号函数 6 特殊函数(Specialized math functions) cart2pol 直角坐标变为柱(或极)坐标cart2sph 直角坐标变为球坐标cross 向量叉积dot 向量内积isprime 若是质数则为真pol2cart 柱(或极)坐标变为直角坐标sph2cart 球坐标变为直角坐标七Matlab矩阵函数和数值线性代数1、矩阵分析(Matrix analysis)det 行列式的值norm 矩阵或向量范数normest 估计2 范数null 零空间orth 值空间rank 秩rref 转换为行阶梯形trace迹subspace 子空间的角度2、线性方程(Linear equations)chol Cholesky 分解cholinc 不完全Cholesky 分解cond 矩阵条件数condest 估计1-范数条件数inv 矩阵的逆lu LU 分解luinc 不完全LU 分解lscov 已知协方差的最小二乘积nnls 非负二乘解pinv 伪逆qr QR 分解rcond LINPACK 逆条件数\、/ 解线性方程3、特性值与奇异值(Eigenvalues and singular values)condeig 矩阵各特征值的条件数eig 矩阵特征值和特征向量eigs 多个特征值gsvd 归一化奇异值分解hess Hessenberg 矩阵poly 特征多项式polyeig 多项式特征值问题qz 广义特征值schur Schur 分解svd 奇异值分解svds 多个奇异值4、矩阵函数(Matrix functions)expm 矩阵指数expm1 矩阵指数的Pade 逼近expm2 用泰勒级数求矩阵指数expm3 通过特征值和特征向量求矩阵指数funm 计算一般矩阵函数logm 矩阵对数sqrtm 矩阵平方根5、因式分解(Factorization utility)cdf2rdf 复数对角型转换到实块对角型balance 改善特征值精度的平衡刻度rsf2csf 实块对角型转换到复数对角型八数据分析和傅里叶变换1、基本运算(Basic operations)cumprod 元素累计积cumsum 元素累计和cumtrapz 累计积分hist 统计频数直方图histc 直方图统计max 最大值mean 平均值median 中值min 最小值prod 元素积sort 由小到大排序sortrows 由小到大按行排序std 标准差sum 元素和trapz 梯形数值积分var 求方差2、有限差分(Finite differentces)del2 五点离散Laplacian diff 差分和近似微分gradient 梯度3、相关(Correlation)corrcoef 相关系数cov 协方差矩阵subspace 子空间之间的角度4、滤波和卷积(Filtering and convoluteion)conv 卷积和多项式相乘conv2 二维卷积convn N 维卷积detrend 去除线性分量deconv 解卷和多项式相除filter 一维数字滤波器fliter2 二维数字滤波器5、傅里叶变换(Fourier transforms)fft 快速离散傅里叶变换fft2 二维离散傅里叶变换fftn N 维离散傅里叶变换fftshift 重排fft 和fft2 的输出ifft 离散傅里叶反变换ifft2 二维离散傅城叶反变换ifftn N 维离散傅里叶反变换ifftshift 反fftshift 九音频支持1、音频硬件驱动(Audio hardware drivers)sound 播放向量soundsc 自动标刻并播放waveplay 利用系统音频输出设配播放waverecor 利用系统音频输入设配录音2、音频文件输入输出(Audio file import and export)auread 读取音频文件(.au) auwrite 创建音频文件(.au) wavread 读取音频文件(.wav) wavwrite 创建音频文件(.wav)3、工具(Utilities)lin2mu 将线性信号转换为μ 一律编码的信号mu2lin 将μ 一律编码信号转换为线性信号十插补多项式函数1、数据插补(Data Interpolation)griddata 分格点数据griddata3 三维分格点数据griddatan 多维分格点数据interpft 利用FFT 方法一维插补interp1 一维插补interp1q 快速一维插补interp2 二维插补interp3 三维插补intern N 维插补pchip hermite 插补2 、样条插补(Spline Interpolation)ppval 计算分段多项式spline 三次样条插补3 、多项式(Polynomials)conv 多项式相乘deconv 多项式相除poly 由根创建多项式polyder多项式微分polyfit 多项式拟合polyint 积分多项式分析polyval 求多项式的值polyvalm 求矩阵多项式的值residue 求部分分式表达roots 求多项式的根十一数值泛函函数和ODE 解算器1、优化和寻根(Optimization and root finding)fminbnd 非线性函数在某区间中极小值fminsearch 单纯形法求多元函数极值点指令fzero 单变量函数的零点2、优化选项处理(Optimization Option handling)optimget 从OPTIONS 构架中取得优化参数optimset 创建或修改OPTIONS 构架3、数值积分(Numerical intergration)dblquad 二重(闭型)数值积分指令quad 低阶法数值积分quadl 高阶法数值积分4、绘图(Plotting)ezcontour 画等位线ezcontourf 画填色等位线ezmesh 绘制网格图ezmeshc 绘制含等高线的网格图ezplot 绘制曲线ezplot3 绘制3 维曲线ezpolar 采用极坐标绘图ezsurf 画曲面图ezsurfc 画带等位线的曲面图fplot 画函数曲线图5、内联函数对象(Inline function object)argnames 给出函数的输入宗量char 创建字符传输组或者将其他类型变量转化为字符串数组formula 函数公式inline 创建内联函数6、差微分函数解算器(Differential equation solvers)ode113 变阶法解方程ode15s 变阶法解刚性方程ode23 低阶法解微分方程ode23s 低阶法解刚性微分方程ode23t 解适度刚性微分方程odet23tb 低阶法解刚性微分方程ode45 高阶法解微分方程十二二维图形函数1、基本平面图形(Elementary X-Y graphs)loglog 双对数刻度曲线plot 直角坐标下线性刻度曲线plotyy 双纵坐标图polar 极坐标曲线图semilogx X 轴半对数刻度曲线semilogy Y 轴半对数刻度曲线2 、轴控制(Axis control)axes 创建轴axis 轴的刻度和表现box 坐标形式在封闭式和开启词式之间切换grid 画坐标网格线hold 图形的保持subplot 创建子图zoom 二维图形的变焦放大3、图形注释(Graph annotation)gtext 用鼠标在图上标注文字legend 图例说明plotedit 图形编辑工具text 在图上标注文字texlabel 将字符串转换为Tex 格式title 图形标题xlabel X 轴名标注ylabel Y 轴名标注4、硬拷贝(Hardcopy and printing)orient 设置走纸方向print 打印图形或把图存入文件printopt 打印机设置十三三维图形函数1、基本三维图形(Elementary 3-D plots) fill3 三维曲面多边形填色mesh 三维网线图plot3 三维直角坐标曲线图surf 三维表面图2 、色彩控制(Color control)alpha 透明色控制brighten 控制色彩的明暗caxis (伪)颜色轴刻度colordef 用色风格colormap 设置色图graymon 设置缺省图形窗口为单色显示屏hidden 消隐shading 图形渲染模式whitebg 设置图形窗口为白底3、光照模式(Lighting)diffuse 漫反射表面系数light 灯光控制lighting 设置照明模式material 使用预定义反射模式specular 漫反射surfnorm 表面图的法线surfl 带光照的三维表面图4 、色图(Color maps)autumn 红、黄浓淡色bone 蓝色调灰度图colorcube 三浓淡多彩交错色cool 青和品红浓淡色图copper 线性变化纯铜色调图flag 红-白-蓝黑交错色图gray 线性灰度hot 黑-红-黄-白交错色图hsv 饱和色彩图jet 变异HSV 色图lines 采用plot 绘线色pink 淡粉红色图prism 光谱色图spring 青、黄浓淡色summer 绿、黄浓淡色vga 16 色white 全白色winter 蓝、绿浓淡色5、轴的控制(Axis control)axes 创建轴axis 轴的刻度和表现box 坐标形式在封闭式和开启式之间切换daspect 轴的DataAspectRatio 属性grid 画坐标网格线hold 图形的保持pbaspect 画坐标框的PlotBoxAspectRatio 属性subplot 创建子图xlim X 轴范围ylim Y 轴范围zlim Z 轴范围zoom 二维图形的变焦放大6、视角控制(Viewpoint control)rotate3d 旋动三维图形view 设定3-D 图形观测点viewmtx 观测点转换矩阵7、图形注释(Graph annotation)colorbar 显示色条gtext 用鼠标在图上标注文字plotedit 图形编辑工具text 在图上标注文字title 图形标题xlabel X 轴名标注ylabel Y 轴名标注zlabel Z 轴名标注8 、硬拷贝(Hardcopy and printing)orient 设置走纸方向print 打印图形或把图存入文件printopt 打印机设置verml 将图形保存为VRML2.0 文件十四特殊图形1、特殊平面图形(Specialized 2-D graphs)area 面域图bar 直方图barh 水平直方图comet 彗星状轨迹图compass 从原点出发的复数向量图errorbar 误差棒棒图ezplot 画二维曲线ezpolar 画极坐标曲线feather 从X 轴出发的复数向量图fill 多边填色图fplot 函数曲线图hist 统计频数直方图pareto Pareto图pie 饼形统计图plotmatrix 散点图阵列scatter 散点图stairs 阶梯形曲线图stem 火柴杆图2 、等高线及二维半图形(Contour and 2-1/2D graphs)clabel 给等高线加标注contour 等高线图contourf 等高线图contour3 三维等高线ezcontour 画等位线ezcontourf 画填色等位线pcolor 用颜色反映数据的伪色图voronoi Voronoi 图3、特殊三维图形(Specialized 3-D graphs)bar3 三维直方图bar3h 三维水平直方图comet3 三维彗星动态轨迹线图ezgraph3 通用指令ezmesh 画网线图ezmeshc 画等位线的网线图ezplot3 画三维曲线ezsurf 画曲面图ezsurfc 画带等位线的曲面图meshc 带等高线的三维网线图meshz 带零基准面的三维网线图pie3 三维饼图ribbon 以三维形式绘制二维曲线scatter3 三维散点图stem3 三维离散杆图surfc 带等高线的三维表面图trimesh 三角剖分网线图trisurf 三角剖分曲面图waterfall 瀑布水线图4、内剖及向量视图(Volume and vector visualization)coneplot 锥体图contourslice 切片等位线图quiver 矢量场图quiver3 三维方向箭头图slice 切片图5、图像显示及文件处理(Image display and file I/O)brighten 控制色彩的明暗colorbar 色彩条状图colormap 设置色图contrast 提高图像对比度的灰色图gray 线性灰度image 显示图像imagesc 显示亮度图像imfinfo 获取图像文件的特征数据imread 从文件读取图像的数据阵(和伴随色图))imwrite 把强度图像或真彩图像写入文件6、影片和动画(Movies and animation)capture 当前图的屏捕捉frame2im 将影片动画转换为编址图像getframe 获得影片动画图像的帧im2frame 将编址图像转换为影片动画movie 播放影片动画moviein 影片动画内存初始化rotate 旋转指令7、颜色相关函数(Color related function)spinmap 颜色周期性变化操纵8、三维模型函数(Solid modeling)cylinder 圆柱面patch 创建块sphere 球面Surf2patch 将曲面数据转换为块数据十五句柄图形1、图形窗的产生和控制(Figure window creation and control)clf 清除当前图close 关闭图形figure 打开或创建图形窗口gcf 获得当前图的柄openfig 打开图形refresh 刷新图形shg 显示图形窗2、轴的产生和控制(Axis creation and control)axes 在任意位置创建轴axis 轴的控制box 坐标形式在封闭式和开启式之间切换caxis 控制色轴的刻度cla 清除当前轴gca 获得当前轴的柄hold 图形的保持ishold 若图形处保持状态则为真subplot 创建子图3、句柄图形对象(Handle Graphics objects)axex 在任意位置创建轴figure 创建图形窗口image 创建图像light 创建光line 创建线patch 创建块rectangle 创建方surface 创建面text 创建图形中文本uicontextmenu 创建现场菜单对象uicontrol 用户使用界面控制uimenu 用户使用菜单控制4、句柄图形处理(Handle Graphics operations)copyobj 拷贝图形对象及其子对象delete 删除对象及文件drawnow 屏幕刷新findobj 用规定的特性找寻对象gcbf "正执行回调操作"的图形的柄gcbo "正执行回调操作"的控件图柄指令gco 获得当前对象的柄get 获得对象特性getappdat 获得应用程序定义数据isappdata 检验是否应用程序定义数据reset 重设对象特性rmappdata 删除应用程序定义数据set 建立对象特性setappdata 建立应用程序定义数据5 、工具函数(Utilities)closereq 关闭图形窗请求函数ishandle 若是图柄代号侧为真newplot 下一个新图十六图形用户界面工具align 对齐用户控件和轴cbedit 编辑回调函数ginput 从鼠标得到图形点坐标guide 设计GUI menu 创建菜单menuedit 菜单编辑propedit 属性编辑uicontrol 创建用户界面控制uimenu 创建用户界面菜单十七字符串1 、通用字符串函数(General)blanks 空格符号cellstr 通过字符串数组构建字符串的元胞数组char 创建字符传输组或者将其他类型变量转化为字符串数组deblank 删除最后的空格double 把字符串变成ASCII 码值eval 执行串形式的MATLAB 表达式2、字符串查询(String tests)iscellstr 若是字符串组成的元胞数组则为真ischar 若是字符串则为真isletter 串中是字母则为真isspace 串中是空格则为真isstr 若是字符串则为真3、字符串操作(String operations)base2dec X-进制串转换为十进制整数bin2dec 二进制串转换为十进制整数dec2base 十进制整数转换为X 进制串dec2bin 十进制整数转换为二进制串dec2hex 十进制整数转换为16 进制串findstr 在一个串中寻找一个子串hex2dec 16-进制串转换为十进制整数hex2num 16-进制串转换为浮点数int2str 将整数转换为字符串lower 把字符串变成小写mat2str 将数组转换为字符串num2str 把数值转换为字符串strcat 把多个串连接成长串strcmp 比较字符串strcmpi 比较字符串(忽略大小写)strings MATLAB 中的字符串strjust 字符串的对齐方式strmatch 逐行搜索串strnomp 比较字符串的前N 个字符strncmpi 比较字符串的前N 个字符(忽略大小写)strrep 用另一个串代替一个串中的子串strtok 删除串中的指定子串strvcat 创建字符串数组str2mat 将字符串转换为含有空格的数组str2num 将字符串转换为数值upper 把字符串变成大写十八文件输入/输出clc 清除指令窗口disp 显示矩阵和文字内容fprintf 把格式化数据写到文件或屏幕home 光标返回行首input 提示键盘输入load 从磁盘中调入数据变量pause 暂停sprintf 写格式数据到串sscanf 在格式控制下读串十九时间和日期clock 时钟cputme MATLAB 战用CPU 时间date 日期etime 用CLOCK 计算的时间now 当前时钟和日期pause 暂停tic 秒表启动toc 秒表终止和显示二十数据类型1、数据类型(Data types)cell 创建元胞变量char 创建字符传输组或者将其他类型变量转化为字符串数组double 转化为16 位相对精度的浮点数值对象function handle 函数句柄inline 创建内联函数JavaArray 构建Java 数组JavaMethod 调用某个Java 方法JavaObject 调用Java 对象的构造函数single 转变为单精度数值sparse 创建稀疏矩阵struct 创建构架变量uint8(unit16、unit32) 转换为8(16、32)位无符号整型数int8(nit16、nit32) 转换为8(16、32)位符号整型数2、多维数组函数(Multi-dimensional array functions)cat 把若干数组串接成高维数组ndims 数组A 的维数ndgrid 为N-D 函数和插补创建数组ipermute 广义反转置permute 广义非共轭转置shiftdim 维数转换squeeze 使数组降维3、元胞数组函数(Cell array functions)cell 创建元胞变量celldisp 显示元胞数组内容cellfun 元胞数组函数cellplot 图示元胞数组的内容cell2struct 把元胞数组转换为构架数组deal 把输入分配给输出is cell 若是元胞则为真num2 cell 把数值数组转换为元胞数组struct2 cell 把构架数组转换为元胞数组4、构架函数(Structure functions)fieldnames 获取构架的域名getfield 获取域的内容isfield 若为给定构架的域名则为真isstruct 若是构架则为真rmfield 删除构架的域setfield 指定构架域的内容struct 创建构架变量5、函数句柄函数(Function handle functions)@ 创建函数句柄functions 列举函数句柄对应的函数func2str 将函数句柄数组转换为字符串str2func 将字符串转换为函数句柄6、面向对象编程(Object oriented programming functions)dlass 查明变量的类型isa 若是指定的数据类型则为真inferiorto 级别较低isjava 若是java 对象则为真isobject 若是对象则为真methods 显示类的方法名substruct 创建构架总量superiorto 级别较高二一示例demo 演示程序flow 无限大水体中水下射流速度数据intro 幻灯演示指令peaks 产生peaks 图形数据二二符号工具包1、微积分(Calculus)diff 求导数limit 求极限int 计算积分jacobian Jacobian 矩阵symsum 符号序列的求和trylor Trylor 级数2、线性代数(Linear Algebra)det 行列式的值diag 创建对角阵,抽取对角向量eig 矩阵特征值和特征向量expm 矩阵指数inv 矩阵的逆jordan Jordan 分解null 零空间poly 特征多项式rank 秩rref 转换为行阶梯形svd 奇异值分解tril 抽取下三角阵triu 抽取上三角阵3、化简(Simplification)collect 合并同类项expand 对指定项展开factor 进行因式或因子分解horner 转换成嵌套形式numden 提取公因式simple 运用各种指令化简符号表达式simplify 恒等式简化subexpr 运用符号变量置换子表达式subs 通用置换指令4、方程求解(Solution of Equation)compose 求复函数dsolve 求解符号常微分方程finverse 求反函数fminunc 拟牛顿法求多元函数极值点fsolve 解非线性方程组lsqnonlin 解非线性最小二乘问题solve 求解方程组5、变量精度(Variable Precision Arithmetic)digits 设置今后数值计算以n 位相对精度进行vpa 给出数值型符号结果6、积分变换(Integral Transforms)fourier Fourier 变换ifourier Fourier 反变换ilaplace Ilaplace 反变换iztrans Z 反变换laplace Ilaplace 变换ztrans Z 变换7、转换(Conversions)。
基于Matlab的批量转换DICOM格式CT序列图像的实现
随着医学影像技术和通信网络技术的发展,不同厂家的医学影像设备与医院信息化系统之间,需要统一的标准实现医学图像的存储和传输,为此DICOM(Digital Imaging and Commu-nication in Medicine)医学数字成像和通信标准应运而生[1]。
该标准包含了医学数字图像的采集、存储、通信、显示和查询等开放式的信息交换协议。
目前各种医疗影像设备(如CT,MRI,B超等)几乎都采用DICOM3.0标准存储图像文件,但DICOM格式的图像主要应用于带有相应标准接口的设备中,不是普通计算机应用软件可识别的图像格式,同时也不能在通用的图像处理软件中直接打开。
为了科研、教学和学术交流等目的,有必要将这些标准数字影像设备获取的DICOM格式图像转换成通用格式的图像文件,如BMP,TIFF,JPEG和RAW等,以便使用普通计算机对它们进行后续处理。
当前流行的图像处理软件如:Photoshop CS3,虽然已具有单幅DICOM图像的转换功能,但应用起来费时费力,需要人工手动操作完成;另外不管是CT还是 MRI成像设备产生的DICOM图像多为序列图像,要进行格式转换的图像文件数目较多,如果用Photoshop手工完成序列图像格式转换的话,工作量巨大;因此,设计一个批量完成序列图像的DICOM格式转换程序,显得十分必要。
笔者开发了一个基于MATLAB编程的自动转换程序,实现了DICOM格式的CT序列图像的批量转换,具有简单易行的特点。
1 CT 图像和CT 值CT (Computed Tomography)即电子计算机断层扫描,它①基金项目:陕西省教育厅自然科学专项项目基于增强CT的口腔癌计算机识别和辅助分析(项目编号:2013JK1173)。
作者简介:王浩军(1968,1—),女,汉,河北宁晋人,博士,副教授,研究方向:图像处理和模式识别。
杨燕(1971,8—),女,汉,陕西西安人,硕士,高工,研究方向:控制工程。
基于Matlab的A律PCM编码系统设计与仿真
现代通信原理课程设计报告题目:基于Matlab的A律PCM编码系统设计与仿真*名:**学院:研究生院专业:电子与通信工程指导教师:**完成日期:2013 年4 月14日基于Matlab 的A 律PCM 编码系统设计与仿真1 系统设计原理1.1脉冲编码调制(PCM )脉冲编码调制(PCM ,Pulse Code Modulation)在通信系统中完成将语音信号数字化功能。
是一种对模拟信号数字化的取样技术,将模拟信号变换为数字信号的编码方式,特别是对于音频信号。
PCM 对信号每秒钟取样 8000 次;每次取样为8个位,总共64kbps 。
PCM 的实现主要包括三个步骤完成:抽样、量化、编码。
分别完成时间上离散、幅度上离散、及量化信号的二进制表示。
根据CCITT 的建议,为改善小信号量化性能,采用压扩非均匀量化,有两种建议方式,分别为A 律和μ律方式,我国采用了A 律方式,由于A 律压缩实现复杂,常使用 13 折线法编码,采用非均匀量化PCM 编码示意图如图1.2 A 律压缩律原理广泛采用的两种对数压缩律是μ压缩律和A 压缩律。
美国采用μ压缩律,我国和欧洲各国均采用A 压缩律,因此,PCM 编码方式采用的也是A 压缩律。
所谓A 压缩律也就是压缩器具有如下特性的压缩律:A X A Ax y 10,ln 1≤<+=11,ln 1ln 1<≤++=X A A Ax y式中,x 为压缩器归一化输入电压;y 为压缩器归一化输出电压;A 为常数,决定压缩程度。
A 压缩律中的常数A 不同,则压缩曲线的形状也不同,它将特别影响小电压时的信号量噪比的大小,在实用中,选择A 等于87.6。
A 律压缩律表示式是一条连续的平滑曲线,用电子线路很难准确的实现。
由于A律压缩实现复杂,常使用 13 折线法编码, 压扩特性图如下图所示A律函数13折线压扩特性图图中横坐标x在0~1区间中分为不均匀的8段。
2/1~1间的线段称为第8段;4/1~2/1间的线段称为第7段;8/1~4/1间的线段称为第6段;依此类推,直到0~128/1间的线段称为第1段。
【生物数学】matlab中mcc和mex等编译命令
Matlab中mcc, mbuild和mex命令详解MATLAB编译及接口Matlab的mcc命令将m文件转换成C/C++文件和相应的MEX包裹文件(需要Matlab编译器)和exe文件,并在特定条件下可以自动调用mbuild或者mex。
Mex命令将入口函数为mexfunction()的C/C++文件编译成MEX(DLL)文件(需要C/C++编译器)。
Mbuild命令将入口函数为main()的C/C++文件生成可独立运行的C应用程序(需要C/C++编译器)。
对于64位的Windows平台,MATLAB没有现成的C编译器。
需要免费下载Microsoft Windows SDK编译器。
Microsoft Windows SDK for Windows 7 and .NET Framework 4下载地址:(需要联网安装):microsoft/en-us/download/details.aspx?id=8279安装前一定要卸载Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319以上版本的C++运行库,装完SDK7.1后需要安装VC-Compiler-KB2519277补丁::microsoft/zh-cn/download/details.aspx?id=4422 在使用mcc, mbuild和mex命令之前,首先要配置MATLAB使用Windows SDK进行C/C++语言编译,配置命令如下:mex -setup17mbuild -setup配置命令运行结果:>> mex -setupMEX 配置为使用'Microsoft Visual C++ 2012 (C)' 以进行C 语言编译。
警告: MATLAB C 和Fortran API 已更改,现可支持包含2^32-1 个以上元素的MATLAB 变量。
不久以后,您需要更新代码以利用新的API。
matlab转C语言
matlab转C语言1.软件版本 matlab R2023a2.步骤(1).编写特定功能的matlab代码,以及其测试文件(2).检查matlab代码的兼容性,确保matlab代码都能转换成C/C++代码(并不是所有的matlab代码都能生成C/C++代码)(3).生成 .c 文件和mex文件(4).在C语言编译器中验证生成的 .c 文件3.详细步骤3.1 编写matlab代码及其测试文件1.编写matlab代码3.2 生成步骤1.在APP菜单栏里面找到matlab coder ,双击打开2.Entry-Point Function 里面选择matlab的功能函数文件。
如果是一个大型工程,只需要把最顶层的文件添加进来。
它会自动的添加下面的子文件。
下一步3.这里添加测试文件。
然后点击autodefine input types.系统会自动的为输入变量分配类型,默认是double。
也可以手动为输入变量分配类型。
需要注意的是需要将matlab的工作路径设置在测试文件所在的路径,不然这一步会提示没定义测试文件,这一步很重要很重要很重要。
下一步4.点击check for issues,系统会生成MEX函数。
如果功能函数和测试文件有错误或者哪些matlab语句不能转换成C语言,在这一步都会报出来。
如果在开始编写matlab功能函数的时候不知道哪些语句无法生成C语言,就先不用管。
然后在这一步根据提示进行修改。
下一步5.这一步是配置生成C语言的参数。
1.build type是配置要生成文件的类型,这里选择source code.3.ToolChain,根据自己的C语言编译器进行选择相应的编译器4.more setting 里面根据自己的需要进行配置,一般可以选择默认配置5.点击generate6.下面是生成代码后的界面,至此就算生成成功了另外有两篇文章写得也挺好的。
基于matlab编码的pcm编译码实现
2019年12月第19卷第4期廊坊师范学院学报(自然科学版)Journal of Langfeng Normal University (Natural Science Edition)Dec.2019Vol. 19 No.4基于MATLAB 编码的PCM 编译码实现段晓霞(廊坊师范学院,河北廊坊065000)【摘要】PCM 编码是一种将连续模拟信号变换为数字信号、在信道中传输、在接收端还原为模拟信号的编码方式。
文中提出发送端抽样、量化、编码及接收端译码的算法思想,在MATLAB 平台上进行了验证。
【关键词】PCM ;MATLAB ;编码;译码Implementation of PCM Encoding and Decoding Basedon MATLAB CodingDUAN Xiao-xia(Langfang Normal University, Langfang 065000, China)[Abstract] PCM coding is a way to convert continuous analog signals into digital signals, and then transmit them in chan nels and restore them to analog signals at the receiving end. The algorithm ideas of sampling, quantification, coding and de coding at the sending end are proposed and verified on MATLAB platform.[Keywords] PCM; MATLAB; encoding; decoding〔中图分类号〕TP391 〔文献标识码〕A 〔文章编号]1674 - 3229(20⑼04-0033-051 PCM 简介脉冲编码调制(Pulse Code Modulation)也称PCM 编码,是数字通信的编码方式之一,主要的作用是将语音、图像等模拟信号在发送端转换为数字 信号并送到信道传输,再在接收端还原为模拟信号 并送到信宿。
TURBO码的编译码原理及matlab仿真
Turbo码的编译码原理及MATLAB仿真摘要纠错码技术作为改善数字通信可靠性的一种有效手段,在数字通信的各个领域中获得极为广泛的应用。
Turbo码是并行级联递归系统卷积码,在接近Shannon限的低信噪比下能获得较低的误码率,现已被很多系统所采用。
本文分析了Turbo码编码译码的原理,为了使Turbo码仿真更容易,研究并建立了基于Matlab中Simulink通信模块的Turbo码仿真模型。
使用所建立的模型进行仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译码算法越优,Turbo码性能越好,设计实际系统时,应综合考虑各因素。
关键词:Turbo码;Simulink仿真;交织长度;迭代次数AbstractAs an effective means to improve the reliability of digital communication, error correcting code technology is widely used in the field of digital communication.Turbo code is a parallel concatenated recursive systematic convolutional code, which can obtain lower bit error rate in the low SNR near Shannon limit,which is now used by many systems.In this paper,the principle of Turbo coding and decoding is analyzed,in order to make the Turbo Code simulation easier,a Turbo code simulation model based on Simulink module of Matlab is studied. Simulation result using the established model shows that the longer interleaving length,the more iteration times and the better decoding algorithm bring the better Turbo code performance with the same SNR value.Keywords:Turbo code;Simulink simulation;Interleaving length;Iteration times;引言根据Shannon[1]有噪信道编码定理,在信道传输速率R不超过信道容量C的前提下,只有在码组长度无限的码集合中随机地选择编码码字并且在接收端采用最大似然译码算法时,才能使误码率接近为零。
基于matlab的遗传算法简单实例--浅谈精英策略和轮盘赌
基于matlab的遗传算法简单实例--浅谈精英策略和轮盘赌⾸先要了解遗传算法的⼀些基本概念:基因型(genotype):性状染⾊体的内部表现;表现型(phenotype):染⾊体决定性状的外部表现,或者说,根据基因型形成的个体;进化(evolution):逐渐适应⽣存环境,品质不断得到改良。
⽣物的进化是以种群的形式进⾏的。
适应度(fitness):度量某个物种对于⽣存环境的适应程度。
选择(selection):以⼀定的概率从种群中选择若⼲个个体。
⼀般,选择过程是⼀种基于适应度的优胜劣汰的过程。
复制(reproduction):细胞分裂时,遗传物质DNA通过复制⽽转移到新产⽣的细胞中,新细胞就继承了旧细胞的基因。
交叉(crossover):两个染⾊体的某⼀相同位置处DNA被切断,前后两串分别交叉组合形成两个新的染⾊体。
也称基因重组或杂交;变异(mutation):复制时可能(很⼩的概率)产⽣某些复制差错,变异产⽣新的染⾊体,表现出新的性状。
编码(coding):DNA中遗传信息在⼀个长链上按⼀定的模式排列。
遗传编码可看作从表现型到基因型的映射。
解码(decoding):基因型到表现型的映射。
个体(individual):指染⾊体带有特征的实体;是问题的⼀个解种群(population):个体的集合,该集合内个体数称为种群的⼤⼩,根据适应函数选择产⽣的⼀组解。
遗传算法的精髓就在于⾃然选择。
算法中有三个主要算⼦,重组、变异、选择。
重组的作⽤是稳定朝着最优解的⽅向进化。
变异的作⽤是保证解空间的良好搜索。
选择的作⽤是适者⽣存。
选择的算法有很多,如轮盘选选择、随机遍历选择、截断选择、锦标赛选择、局部选择等等本⽂对选择中的轮盘赌和精英策略⽤⼀简单实例来进⾏对⽐。
从GA的整个选择策略来讲,精英选择是群体收敛到优化问题最优解的⼀种基本保障。
如果下⼀代群体的最佳个体适应值⼩于当前群体最佳个体的适应值,则将当前群体最佳个体或者适应度⼤于下⼀代最佳个体适应值的多个个体直接复制到下⼀代,随机替代或替代最差的下⼀代群体中的相应数量的个体。
matlab数据类型及转换
Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。
1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通过intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如intmax(‘int8’)=127;2、浮点:(single;double)浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。
3、逻辑:(logical)Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0:A = rand(5);A(A>0.5)=0;4、字符:(char)Matlab中的输入字符需使用单引号。
字符串存储为字符数组,每个元素占用一个ASCII字符。
如日期字符:DateString=’9/16/2001’ 实际上是一个1行9列向量。
构成矩阵或向量的行字符串长度必须相同。
可以使用char函数构建字符数组,使用strcat函数连接字符。
例如,命令 name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数.例如size(char(‘abc’,’abcd’))返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name=char(‘abc’,’abcd’); deblank(name(1,:))。
matlab读取二进制文件,并把二进制转换成32位有符号整型数组的方法
matlab读取二进制文件,并把二进制转换成32位有符
号整型数组的方法
在MATLAB中,你可以使用`fread`函数来读取二进制文件,并将数据转换成32位有符号整型数组。
下面是一个简单的例子:
```matlab
filename = 'your_binary_'; % 你的二进制文件名
fid = fopen(filename, 'rb'); % 打开二进制文件以供读取
if fid == -1
error('无法打开文件');
end
% 读取二进制数据并转换为32位有符号整型数组
data = fread(fid, 'int32'); % 'int32'表示读取的数据将被解释为32位有符号整型
fclose(fid); % 关闭文件
```
这个代码将打开一个名为`your_binary_`的二进制文件,读取所有的数据,并将这些数据转换为32位有符号整型数组。
请注意,你需要将
`your_binary_`替换为你实际的二进制文件名。
此外,`fread`函数的第二个参数是一个格式字符串,它告诉MATLAB如何解释读取的数据。
在这个例子中,`'int32'`表示读取的数据将被解释为32位有符号整型。
如果你需要读取其他类型的数据,你可以使用不同的格式字符串。
例如,如果你需要读取32位无符号整型,你可以使用`'uint32'`。
matlab中cell转数字
matlab中cell转数字在MATLAB中,将cell数组转换为数字数组可以通过几种方法实现。
首先,假设我们有一个cell数组,名为cellArray,其中包含了数字和其他类型的数据。
我们想将其中的数字提取出来并转换为数字数组。
一种方法是使用cell2mat函数。
这个函数可以将cell数组中的元素连接起来,然后返回一个数值数组。
但是需要注意的是,cell数组中的每个元素必须是数值类型,否则会导致错误。
示例代码如下:matlab.cellArray = {1, 2, 3, 'four', 5};numericArray = cell2mat(cellArray);在这个例子中,'four'是一个字符串,所以在使用cell2mat时会产生一个错误。
因此,在使用cell2mat函数时,需要确保cell 数组中的每个元素都是数值类型。
另一种方法是使用cellfun函数。
这个函数可以对cell数组中的每个元素应用指定的函数,然后返回结果。
我们可以使用str2double函数将每个元素转换为数值类型,并将结果存储在一个新的数值数组中。
示例代码如下:matlab.cellArray = {1, 2, 3, '4', 5};numericArray = cellfun(@str2double, cellArray);在这个例子中,我们将cell数组中的每个元素转换为数值类型,并存储在numericArray中。
需要注意的是,如果cell数组中包含非数值类型的元素,也会导致错误。
除了上述方法,还可以使用循环遍历cell数组,并逐个将元素转换为数值类型,然后存储在一个新的数值数组中。
这种方法比较直观,但在处理大型数据集时可能效率较低。
总之,在MATLAB中将cell数组转换为数字数组有多种方法,可以根据实际情况选择合适的方法进行转换。
希望这些方法能够帮助到你。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用Matlab软件的GUI界面编程,做一个简单的界面,通过此界面调用相关的程序去实现由抽样判决后的AMI码型、CMI码型和HDB3码型数字序列恢复出原始的PCM脉冲编码信号。
实验目的:1,熟悉Matlab的GUI的编程操作,学会运用GUI来建立一个界面2.掌握AMI,CMI,HDB3码型的特点和意义,学会将PCM脉冲编码信号转化为AMI,CMI,HDB3的编码以及AMI,CMI,HDB3解码的方式。
实验方法:实验中采用的方法是先建立大概的界面,其中包括输入框、按钮、提示内容及坐标系等。
然后再对各种组件设置好属性,并对各个组件编写回调函数,最后进行调试验证饥渴。
实验代码:1.AMI码型转换:%%%%%%%%%%%% 编码 %%%%%%%%%%%%%p = -1;for i=1:length(f);if f(i)==1e(i) = (-1)*p;p = e(i);elsee(i) = f(i);endend%%%%%%%%%%%% 译码 %%%%%%%%%%%%for i=1:length(f);if e(i)~=0l(i) = 1;elsee(i) = 0;endend编码:代码中的f代表着输入字符串转化后的ASCII码,用变量p来实现原信号中1的正负交替。
例如,f(1)=1,则e(1)=1,p=1;f(2)=1,则e(2)=-1,p=-1。
如此就可以得到正负1交替了。
译码:当e(i)不等于0,就把结果等于1。
2.CMI码型转换%%%%%%%%%%%% 编码 %%%%%%%%%%%%%m=1;p=-1;for i=1:length(f)if(f(i)==1&m==1)s(i)=3;m=m*p;else if(f(i)==1&m==-1)s(i)=0;m=m*p;elses(i)=1;endendendk=dec2bin(s,2);l=k';x=l(:);y=x';n=str2num(y(1));for i=2:length(y)n=[n str2num(y(i))];end%%%%%%%%%%%% 译码 %%%%%%%%%%%%%if n(1)==0if n(2)==1cm=[0];elsecm=[1];endelsecm=[1];endr=3;while r<length(n)if n(r)==0if n(r+1)==1cm=[cm 0];elsecm=[cm 1];endelsecm=[cm 1];endr=r+2;end3.HDB3码型转换%%%%%%%%%%%% 编码 %%%%%%%%%%%%%yn=xn;% 输出yn初始化num=0;% 计数器初始化for k=1:length(xn)if xn(k)==1num=num+1; % "1"计数器if num/2 == fix(num/2) % 奇数个1时输出-1,进行极性交替yn(k)=1;elseyn(k)=-1;endendend% HDB3编码num=0; % 连零计数器初始化yh=yn; % 输出初始化sign=0; % 极性标志初始化为0V=zeros(1,length(yn));% V脉冲位置记录变量B=zeros(1,length(yn));% B脉冲位置记录变量for k=1:length(yn)if yn(k)==0num=num+1; % 连“0”个数计数if num==4 % 如果4连“0”num=0; % 计数器清零yh(k)=1*yh(k-4);% 让0000的最后一个0改变为与前一个非零符号相同极性的符号V(k)=yh(k); % V脉冲位置记录if yh(k)==sign % 如果当前V符号与前一个V符号的极性相同 yh(k)=-1*yh(k); % 则让当前V符号极性反转,以满足V符号间相互极性反转要求yh(k-3)=yh(k); % 添加B符号,与V符号同极性B(k-3)=yh(k); % B脉冲位置记录V(k)=yh(k); % V脉冲位置记录yh(k+1:length(yn))=-1*yh(k+1:length(yn));% 并让后面的非零符号从V符号开始再交替变化endsign=yh(k); % 记录前一个V符号的极性endelsenum=0; % 当前输入为“1”则连“0”计数器清零endend%%%%%%%%%%%% 译码 %%%%%%%%%%%%%input=yh; % HDB3码输入decode=input; % 输出初始化sign=0; % 极性标志初始化for k=1:length(yh)if input(k) ~= 0if sign==yh(k) % 如果当前码与前一个非零码的极性相同decode(k-3:k)=[0 0 0 0];% 则该码判为V码并将*00V清零endsign=input(k); % 极性标志endenddecode=abs(decode); % 整流实验现象:总体界面:AMI:CMI:HDB3:总结:1.本次实验中因为对画方波不太熟悉,在使用stairs函数时,方波图总是在最后少了一位,后来经查询后才知道stairs的正确用法。
2.由于对GUI界面设置的不熟悉,很多细节都没做到位,界面的美观有待提高。
3.在编代码是经常没有写注释,导致后来有些变量混淆了。
附录:全部代码function varargout = untitled1(varargin)% UNTITLED1 M-file for% UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing% singleton*.%% H = UNTITLED1 returns the handle to a new UNTITLED1 or the handle to% the existing singleton*.%% UNTITLED1('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in with the given input arguments.%% UNTITLED1('Property','Value',...) creates a new UNTITLED1 or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before untitled1_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to untitled1_OpeningFcn via varargin. %% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help untitled1% Last Modified by GUIDE 21-Dec-2014 19:55:20% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @untitled1_OpeningFcn, ...'gui_OutputFcn', @untitled1_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})= str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before untitled1 is made visible.function untitled1_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to untitled1 (see VARARGIN)% Choose default command line output for untitled1= hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes untitled1 wait for user response (see UIRESUME)% uiwait;% --- Outputs from this function are returned to the command line.function varargout = untitled1_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = ;function edit_Callback(hObject, eventdata, handles)% hObject handle to edit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit as text% str2double(get(hObject,'String')) returns contents of edit as a double% --- Executes during object creation, after setting all properties.function edit_CreateFcn(hObject, eventdata, handles)% hObject handle to edit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end% --- Executes on button press in ami.function ami_Callback(hObject, eventdata, handles)user_string=get,'string');a=dec2bin(user_string,8);b=a';c=b(:);d=c';f=str2num(d(1));for i=2:length(d)f=[f str2num(d(i))];endf=[f 0];%%%%%%%%%%%% ±àÂë %%%%%%%%%%%%% p = -1;for i=1:length(f);if f(i)==1e(i) = (-1)*p;p = e(i);elsee(i) = f(i);endend%%%%%%%%%%%% ÒëÂë %%%%%%%%%%%% for i=1:length(f);if e(i)~=0l(i) = 1;elsee(i) = 0;endendaxest=1:length(f);stairs(t-1,f)axis([0 length(f) -2 2])xlabel('ASCIIÂë');grid minor;axest=1:length(e);stairs(t-1,e)axis([0 length(e) -2 2])xlabel('AMI ±àÂë');grid minor;axest=1:length(l);stairs(t-1,l)axis([0 length(l) -2 2])xlabel('AMI ÒëÂë');grid minor;% hObject handle to ami (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in cmi.function cmi_Callback(hObject, eventdata, handles)user_string=get,'string');a=dec2bin(user_string,8);b=a';c=b(:);d=c';f=str2num(d(1));for i=2:length(d)f=[f str2num(d(i))];endf=[f 0];%%%%%%%%%%%% ±àÂë %%%%%%%%%%%%%m=1;p=-1;for i=1:length(f)if(f(i)==1&m==1)s(i)=3;m=m*p;else if(f(i)==1&m==-1)s(i)=0;m=m*p;elses(i)=1;endendendk=dec2bin(s,2);l=k';x=l(:);y=x';n=str2num(y(1));for i=2:length(y)n=[n str2num(y(i))];end%%%%%%%%%%%% ÒëÂë %%%%%%%%%%%%%if n(1)==0if n(2)==1cm=[0];elsecm=[1];endelsecm=[1];endr=3;while r<length(n)if n(r)==0if n(r+1)==1cm=[cm 0];elsecm=[cm 1];endelsecm=[cm 1];endr=r+2;endaxest=1:length(f);stairs(t-1,f)axis([0 length(f) -2 2])xlabel('ASCIIÂë');grid minor;axest=1:length(n);stairs(t-1,n)axis([0 length(n) -2 2])xlabel('CMI ±àÂë');grid minor;axest=1:length(cm);stairs(t-1,cm)axis([0 length(cm) -2 2])xlabel('CMI ÒëÂë');grid minor;% hObject handle to cmi (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- Executes on button press in hdb3.function hdb3_Callback(hObject, eventdata, handles)user_string=get,'string');a=dec2bin(user_string,8);b=a';b=a';c=b(:);d=c';xn=str2num(d(1));for i=2:length(d)xn=[xn str2num(d(i))];endxn=[xn 0];%%%%%%%%%%%% ±àÂë %%%%%%%%%%%%%yn=xn;% Êä³öyn³õʼ»¯num=0;% ¼ÆÊýÆ÷³õʼ»¯for k=1:length(xn)if xn(k)==1num=num+1; % "1"¼ÆÊýÆ÷if num/2 == fix(num/2) % ÆæÊý¸ö1ʱÊä³ö-1,½øÐм«ÐÔ½»Ìæyn(k)=1;elseyn(k)=-1;endendend% HDB3±àÂënum=0; % Á¬Áã¼ÆÊýÆ÷³õʼ»¯yh=yn; % Êä³ö³õʼ»¯sign=0; % ¼«ÐÔ±êÖ¾³õʼ»¯Îª0V=zeros(1,length(yn));% VÂö³åλÖüǼ±äÁ¿B=zeros(1,length(yn));% BÂö³åλÖüǼ±äÁ¿for k=1:length(yn)if yn(k)==0num=num+1; % Á¬¡°0¡±¸öÊý¼ÆÊýif num==4 % Èç¹û4Á¬¡°0¡±num=0; % ¼ÆÊýÆ÷ÇåÁãyh(k)=1*yh(k-4);%ÈÃ0000µÄ×îºóÒ»¸ö0¸Ä±äΪÓëÇ°Ò»¸ö·ÇÁã·ûºÅÏàͬ¼«ÐԵķûºÅV(k)=yh(k); % VÂö³åλÖüǼif yh(k)==sign %Èç¹ûµ±Ç°V·ûºÅÓëÇ°Ò»¸öV·ûºÅµÄ¼«ÐÔÏàͬyh(k)=-1*yh(k); %ÔòÈõ±Ç°V·ûºÅ¼«ÐÔ·´×ª,ÒÔÂú×ãV·ûºÅ¼äÏ໥¼«ÐÔ·´×ªÒªÇóyh(k-3)=yh(k); % Ìí¼ÓB·ûºÅ,ÓëV·ûºÅͬ¼«ÐÔB(k-3)=yh(k); % BÂö³åλÖüǼV(k)=yh(k); % VÂö³åλÖüǼyh(k+1:length(yn))=-1*yh(k+1:length(yn));%²¢ÈúóÃæµÄ·ÇÁã·ûºÅ´ÓV·ûºÅ¿ªÊ¼ÔÙ½»Ìæ±ä»¯endsign=yh(k); % ¼Ç¼ǰһ¸öV·ûºÅµÄ¼«ÐÔendelsenum=0; %µ±Ç°ÊäÈëΪ¡°1¡±ÔòÁ¬¡°0¡±¼ÆÊýÆ÷ÇåÁãendend%%%%%%%%%%%% ÒëÂë %%%%%%%%%%%%%input=yh; % HDB3ÂëÊäÈëdecode=input; % Êä³ö³õʼ»¯sign=0; % ¼«ÐÔ±êÖ¾³õʼ»¯for k=1:length(yh)if input(k) ~= 0if sign==yh(k) %Èç¹ûµ±Ç°ÂëÓëÇ°Ò»¸ö·ÇÁãÂëµÄ¼«ÐÔÏàͬdecode(k-3:k)=[0 0 0 0];% Ôò¸ÃÂëÅÐΪVÂë²¢½«*00VÇåÁãendsign=input(k); % ¼«ÐÔ±êÖ¾endenddecode=abs(decode); % ÕûÁ÷axest=1:length(xn);stairs(t-1,xn)axis([0 length(xn) -2 2])xlabel('ASCIIÂë');grid minor;axest=1:length(yh);stairs(t-1,yh)axis([0 length(yh) -2 2])xlabel('HDB3 ±àÂë');grid minor;axest=1:length(decode);stairs(t-1,decode)axis([0 length(decode) -2 2])xlabel('HDB3 ÒëÂë');grid minor;% hObject handle to hdb3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes when plent is resized.function plent_ResizeFcn(hObject, eventdata, handles)% hObject handle to plent (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --------------------------------------------------------------------function plent_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to plent (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% --- Executes during object creation, after setting all properties. function plent_CreateFcn(hObject, eventdata, handles)% hObject handle to plent (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called。