当前位置:文档之家› BCH编码器与解码器的MATLAB实现及性能分析

BCH编码器与解码器的MATLAB实现及性能分析

BCH编码器与解码器的MATLAB实现及性能分析
BCH编码器与解码器的MATLAB实现及性能分析

BCH编码器与解码器的MATLAB实现及

性能分析

学生姓名:指导老师:

摘要:本课程设计主要为了进一步理解BCH编码原理和解码原理,并通过MATLAB系统软件来实现对BCH编码与解码,且通过对各个元件的参数进行不同的设置,来观察示波器的波形与误码率并分析BCH的性能。在课程设计中,我们将用到MATLAB集成环境下的Simulink仿真平台。在熟悉Simulink的工作环境下,构建BCH编码器及解码器模块,对随机信号进行BCH编码,解码,观察比较随机信号和BCH解码后信号。

关键词:MATLAB; BCH解码器;误码率;

1 引言

1.1课程设计目的

通过本课程的学习,我们不仅能加深理解和巩固理论课上所学有关BCH编码的基本概念,基本理论和基本方法,而且能锻炼我们今后分析问题和解决问题的能力;同时对我们进行良好的独立工作习惯和科学素质的培养,为今后参加科学研究工作打下良好的基础。

1.2课程设计内容

在MATLAB集成环境下的Simulink仿真平台,才考通信原理教材有关BCH 编码的原理电路,依据原理图设计出通信电路图。在仿真平台中构造BCH编码的通信仿真电路图并不断调试知道通过。在仿真图中加入编码率与量化纠错来理解设计目的。

1.3课程设计要求

1)熟悉MATLAB环境下的Simulink仿真平台,熟悉BCH编码与解码原理,构

建BCH编码与解码电路图.

2)对模拟信号进行BCH编码, 将编码后的信号输入信道再进行BCH解码,还原出原信号.建立仿真模型,分析仿真波形.

3)在编码与解码电路间加上各种噪声源,用误码测试模块测量误码率,并给出仿真波形,改变信噪比并比较解码后波形,分析噪声对系统造成的影响。

4)在老师的指导下,要求独立完成课程设计的全部内容,并按要求编写课程设计学年论文,能正确阐述和分析设计和实验结果。

2 BCH编码及解码原理

在以前提出的许多纠正随机错误的码中,BCH码是至今用得最广泛和很多有效地一种码。BCH码是以发明这种子码的三个人的名字“Bose—chaudhuri—hocguenghem”来命名的。

由循环码可知,只要找到循环码的生成多项式g(x),则该码的编码问题就解决了。但是,在系统设计中常是在给定纠正随即错误个数的条件下来寻找生成多项式g(x),从而得到满足抗干扰性能要求的码。BCH码就是为了解决这个问题而发展起来的一类纠正多个随即错误的循环码,而且该码的编码也较容易实现。

BCH码分为两类,即本原BCH码,本原BCH码的码长为Nn=2m-1,它是生成多项式g(x)中含有的最高次数为m次的本原多项式;非本原BCH码的码长n 是2m-1的一个因子它的生成多项式g(x)中不含有最高次数为m的多项式。

对于正整数m=3和t

由下面所列的循环码生成多项式g(x)产生的码,是一个能纠正t个错误的BCH 码。

g(x)=LCM[m1(x),m3(x),……..m2t-1(x)]

式中t---------可纠正的错误个数;

Mi(x)-----最小多项式;

LCM()---- 指取括号内所有多项式的最小公倍数。

3 模块设计与仿真图形分析

3.1 Simulink的工作环境熟悉

建立一个很小的系统,用示波器观察正弦信号的平方的波形,如图1所示。

系统中所需的模块:正弦波模块,示波器模块,乘法器;

图1 正弦波仿真电路图

正弦波参数设置如图2所示。

系统内的示波器所显示的波形如图3所示。

图3 单正弦波与平方波的对比

结论:两正弦波的叠加之后的周期是原周期的1/2, 频度是原来的2倍。

3.2 无干扰信号的BCH编码与解码

(1)无干扰信号的BCH编码与解码仿真原理图

无干扰信号的BCH编码与解码仿真电路图如图4

此系统所用仿真电路模块有:随机信号模块,BCH编码器模块,BCH解码器模块,Buffer模块,示波器模块。随机信号模块用于发出源信号,示波器用于观察波形。

图4 无干扰信号的BCH编码与解码仿真模拟电路图

(2)系统所用模块参数设置

随机信号模块的参数设置:M-ary number是设置源信号的几进制信号设置为二进制信号,Sample time抽样时间为0.2S,Sample per frame是输入信息码为1。

图5 随机信号的参数设置

BCH编码器的参数设置:N=15,K=5 如图6所示。

图6 BCH编码器的参数设置BCH解码器的参数设置:N=15,K=5,如图7所示。

图7 BCH解码器的参数设置Buffer的参数设置: 如图8所示。

图8 Buffer的参数设置

示波器的参数设置:示波器的接口有两个,时间范围是10,如图9所示。

图9 示波器的参数设置

用示波器观察随机信号的图形与进行BCH编码与解码后的图形如图10所示。

图10 随机信号的图形与BCH编码与解码后的图形对

结论:不加任何干扰信号的源随机信号的图形与进行BCH编码与解码后的图形是一致的。

3.3 有干扰信号的BCH编码与解码

(1)有干扰信号的BCH编码与解码仿真模拟电路图

有干扰信号的BCH编码与解码仿真模拟电路图如图11所示

此系统所用模拟电路模块:随机信号模块,BCH编码器模块,BCH解码器模块,Buffer模块,示波器模块,Error模块,Display模块,二进制对称信道。

图11 有干扰信号的BCH编码与解码仿真模拟电路图

(2)系统所用模块的参数设置

随机信号的参数设置:二进制信号,抽样时间0.2S,输出信息码长5。如图5所示。

BCH编码器的参数设置:N=15,K=5.如图6所示。

BCH解码器的参数设置:N=15,K=5 如图7所示。

Buffer的参数设置:如图8所示。

Error的参数设置:时延5,打开一个接口如图12所示。

图12 Error的参数设置

Display 的参数设置如图13所示。

图13 Display的参数设置

二进制噪声参数设置如图14所示。

图14 二进制噪声参数设置

加入二进制噪声错误率为0.1的各波形图如图15所示。

图15由上到下波形所表示为:1.BCH编码与解码后的波形。

2.原随机信号的波形。

3.加入二进制噪声的波形。

图15 加入二进制噪声错误率为0.1的各波形二进制噪声为0.1时的误码率如图16所示。

图16 Display数据显示图

二进制噪声参数设置错误率为0.3时如图17所示。

图17 二进制噪声设置参数

加入二进制噪声错误率为0.3时波形图如图18所示。

图18 加入二进制噪声为0.3的各波形图

二进制错误率为0.3的误码率如图19所示。

图19 Display数据显示图

结论:在编码器和解码器模块间加上二进制噪声模块模拟信号在信道中的传输有干涉,所以就有了误码率而且不小,并且随着错误率的增大误码率增大。

4 结束语

通过本次课程设计,我们主要了解了随机信号二进制的BCH编码与解码原理,特别是BCH编码与解码的MATLAB实现与解调性能分析,把先修的一系列课程的内容应用到课程设计中来,进一步巩固和复习通信原理,MATLAB等课程,以达到融会贯通的目的。为了学习计算机网络和数据通信,多媒体技术等课程打下了坚实的基础。运用学习成果把课堂上学到的系统化的理论知识,尝试的应用于实际工作,并从理论的高度对设计工作的现代化提出一些有针对性的建设和设想,检验学习成果,看一看课堂学习与实际工作到底多大距离,并通过综合分析,找出学习中的不足,以便为完善学习计划,更便学习内容与方法提供实践依据。

经过了近十天的努力,课程设计终于做完了。要感谢一直陪伴着我完成整个课程设计的指导老师,认真给我们答疑解惑,给我们指导。在完成课程设计的过程中,我的收获很大,不仅仅对自己所学专业知识加深了了解,同时还熟练地掌握了MATLAB和WORD软件的操作,而且还锻炼了我自己单独处理问题的能力,这次设计涉及以往所学的只是相对来说比较多,每一步都得用原有的知识来解决,这让我对书本上的知识有了更深的认识与了解,并培养了我的动手能力与自学能力。

在这么多天里,我遇到了很多不能按自己知识来解决的问题,但这些问题在老师的指导和同学们的帮助下我都一一的攻克了。这次课程设计的过程中,最让我棘手的就是误码率开始的时候总是那么的大,让我无从下手,后来经过我反复的操作和对一些书籍的查找终于找到了解决的方法,原来是设置参数的问题,参数设置的不精确,其实参数的设置是这次课程设计中很头疼的一个问题,也是很多同学设计遇到的难点,其实一切事情都没有想象中的那么难,重要的是要敢于尝试,认为难主要的是对原理的不了解,要是搞懂了理论以及传送的流程,设置参数也挺简单的,就这样,经过自己的摸索和一些同学的帮助,我很快的解决了自己与到的问题。。

此次课程设计让我看到了自己的缺点和不足,其实自己要学的东西真的是太多太多了,以前总是看问题太片面,认为自己什么都懂似的,但真的实践起来才

知道原来什么都不是很懂,有点眼高手低,这次课程设计让我明白了学习知识是一个长期积累的过程,明白了学无止境的道理,因此,在以后的学习和工作中我都应该不断的学习,努力提高自己的综合素质。

最后还要感谢指导我们的蔡老师,在您的帮助下我的课程设计才能够成功的完成,谢谢!!老师!

参考文献

【1】曹志刚,钱亚生,现代通信原理,清华大学出版社,1992

【2】青松,程岱松,武建华,数字通信系统的System View仿真与分析,北京航空航天大学出版社,2001

【3】桑林,郝建军,刘丹,数字通信,北京邮电大学出版社,2002

【4】苗云长等主编,现代通信原理及应用。电子工业出版社,2005

【5】吴伟铃,庞沁华,通信原理,北京邮电大学出版社,2005

【6】张圣勤,MATLAB7.0实用教程,机器工业出版社,2006

【7】邵玉斌,Matlab/Simulink通信原理建模与仿真实例分析,清华大学出版社,2008

【8】樊昌信,曹丽娜,通信原理,国防工业出版社,2008

matlab、lingo程序代码14-模糊聚类(聚类分析)

模糊聚类 function c=fuz_hc(a,b) %模糊矩阵的合成运算程序 %输入模糊矩阵a,b,输出合成运算结果c m=size(a,1);n=size(b,2);p=size(a,2); %错误排除 if size(a,2)~=size(b,1) disp('输入数据错误!');return; end %合成运算 for i=1:m for j=1:n for k=1:p temp(k)=min(a(i,k),b(k,j)); end c(i,j)=max(temp); end end disp('模糊矩阵a与b作合成运算后结果矩阵c为:'); c % 求模糊等价矩阵 function r_d=mhdj(r) [m,n]=size(r); for i=1:n for j=1:n for k=1:n r1(i,j,k)=min(r(i,k),r(k,j)); end r1max(i,j)=r1(i,j,1); end end for i=1:n for j=1:n for k=1:n

if r1(i,j,k)>r1max(i,j) r1max(i,j)=r1(i,j,k); end end r_d(i,j)=r1max(i,j); end end %模糊聚类程序 function f=mujl(x,lamda) %输入原始数据以及lamda的值 if lamda>1 disp('error!') %错误处理 end [n,m]=size(x); y=pdist(x); disp('欧式距离矩阵:'); dist=squareform(y) %欧氏距离矩阵 dmax=dist(1,1); for i=1:n for j=1:n if dist(i,j)>dmax dmax=dist(i,j); end end end disp('处理后的欧氏距离矩阵,其特点为每项元素均不超过1:'); sdist=dist/dmax %使距离值不超过1 disp('模糊关系矩阵:'); r=ones(n,n)-sdist %计算对应的模糊关系矩阵 t=mhdj(r); le=t-r; while all(all(le==0)==0)==1 %如果t与r相等,则继续求r乘以r r=t; t=mhdj(r); le=t-r;

聚类分析Matlab程序实现

2. Matlab程序 2.1 一次聚类法 X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900]; T=clusterdata(X,0.9) 2.2 分步聚类 Step1 寻找变量之间的相似性 用pdist函数计算相似矩阵,有多种方法可以计算距离,进行计算之前最好先将数据用zscore 函数进行标准化。 X2=zscore(X); %标准化数据 Y2=pdist(X2); %计算距离 Step2 定义变量之间的连接 Z2=linkage(Y2); Step3 评价聚类信息 C2=cophenet(Z2,Y2); //0.94698 Step4 创建聚类,并作出谱系图 T=cluster(Z2,6); H=dendrogram(Z2); Matlab提供了两种方法进行聚类分析。 一种是利用 clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法; 另一种是分步聚类:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;(2)用 linkage函数定义变量之间的连接;(3)用 cophenetic函数评价聚类信息;(4)用cluster函数创建聚类。 1.Matlab中相关函数介绍 1.1 pdist函数 调用格式:Y=pdist(X,’metric’) 说明:用‘metric’指定的方法计算 X 数据矩阵中对象之间的距离。’ X:一个m×n的矩阵,它是由m个对象组成的数据集,每个对象的大小为n。 metric’取值如下: ‘euclidean’:欧氏距离(默认);‘seuclidean’:标准化欧氏距离; ‘mahalanobis’:马氏距离;‘cityblock’:布洛克距离; ‘minkowski’:明可夫斯基距离;‘cosine’: ‘correlation’:‘hamming’: ‘jaccard’:‘chebychev’:Chebychev距离。 1.2 squareform函数 调用格式:Z=squareform(Y,..) 说明:强制将距离矩阵从上三角形式转化为方阵形式,或从方阵形式转化为上三角形式。 1.3 linkage函数 调用格式:Z=linkage(Y,’method’) 说明:用‘method’参数指定的算法计算系统聚类树。 Y:pdist函数返回的距离向量;

00实验三 基于MATLAB的根轨迹绘制与性能分析

实验四基于MATLAB的根轨迹绘制与性能分析 [实验目的] 1.掌握MATLAB下的根轨迹绘制方法; 2.学会利用根轨迹进行系统分析。 [实验指导] 1.根轨迹作图函数(命令):rlocus( ) 调用格式: ①rlocus(sys) 或rlocus(num,den) ②rlocus(sys,k) ①②画根轨迹图,①变化参量(一般是根轨迹增益)范围系统自动给出; ②变化参量(一般是根轨迹增益)范围在程序中给出; ③r=rlocus(sys) ④ [r,k]=rlocus(sys) ③④不画根轨迹图,③返回闭环根向量;④返回闭环根向量(r)和变化参量(k)。 2.根与根轨迹增益的求取 ⑴在根轨迹上点击,可得到该点的根值和对应的根轨迹增益值。 ⑵使用计算给定根的根轨迹增益的函数(命令):rlocfind( ) 调用格式: ①[k,poles]=rlocfind(sys) ②[k,poles]= rlocfind(sys,p) 使用方法:

①首先,当前根轨迹已绘出。运行该命令时,在根轨迹图中显示出十字光标,当用户选择其中一点时,其相应的增益由k 记录,与增益相关的所有极点记录poles 中;同时,在命令行窗口显示出来。 ②事先事先给出极点p ,运行该命令时,除了显示出该根对应的增益以外,还显示出该增益对应的其它根。 3.开环零点极点位置绘图函数(命令): pzmap( ) 调用格式: ① pzmap(sys) ② [p,z]=pzmap(sys) 函数功能: 给定系统数学模型,作出开环零点极点位置图。 ① 零点极点绘图命令。零点标记为“+”,极点标记为“o”。 ② 返回零点极点值,不作图。 4.根轨迹渐进线的绘制 当根轨迹渐进线与实轴的交点σa 已求出后,可得到方程11()n m a K s σ-=--, 这是根轨迹渐进线的轨迹方程。 将1()() n m a K G s s σ-= -作为一个开环传递函数,录入到MATLAB 中,再使用根 轨迹作图函数(命令)rlocus( ),生成的轨迹就是原根轨迹的渐进线。 5.举例 例1:开环传递函数1 ()(1)(2) K G s s s s =++绘制其闭环根轨迹。 程序: >> z=[];p=[0,-1,-2];k=1;sys=zpk(z,p,k);rlocus(sys) 运行结果:

MATLAB实现FCM 聚类算法

本文在阐述聚类分析方法的基础上重点研究FCM 聚类算法。FCM 算法是一种基于划分的聚类算法,它的思想是使得被划分到同一簇的对象之间相似度最大,而不同簇之间的相似度最小。最后基于MATLAB实现了对图像信息的聚类。 第 1 章概述 聚类分析是数据挖掘的一项重要功能,而聚类算法是目前研究的核心,聚类分析就是使用聚类算法来发现有意义的聚类,即“物以类聚” 。虽然聚类也可起到分类的作用,但和大多数分类或预测不同。大多数分类方法都是演绎的,即人们事先确定某种事物分类的准则或各类别的标准,分类的过程就是比较分类的要素与各类别标准,然后将各要素划归于各类别中。确定事物的分类准则或各类别的标准或多或少带有主观色彩。 为获得基于划分聚类分析的全局最优结果,则需要穷举所有可能的对象划分,为此大多数应用采用的常用启发方法包括:k-均值算法,算法中的每一个聚类均用相应聚类中对象的均值来表示;k-medoid 算法,算法中的每一个聚类均用相应聚类中离聚类中心最近的对象来表示。这些启发聚类方法在分析中小规模数据集以发现圆形或球状聚类时工作得很好,但当分析处理大规模数据集或复杂数据类型时效果较差,需要对其进行扩展。 而模糊C均值(Fuzzy C-means, FCM)聚类方法,属于基于目标函数的模糊聚类算法的范畴。模糊C均值聚类方法是基于目标函数的模糊聚类算法理论中最为完善、应用最为广泛的一种算法。模糊c均值算法最早从硬聚类目标函数的优化中导出的。为了借助目标函数法求解聚类问题,人们利用均方逼近理论构造了带约束的非线性规划函数,以此来求解聚类问题,从此类内平方误差和WGSS(Within-Groups Sum of Squared Error)成为聚类目标函数的普遍形式。随着模糊划分概念的提出,Dunn [10] 首先将其推广到加权WGSS 函数,后来由Bezdek 扩展到加权WGSS 的无限族,形成了FCM 聚类算法的通用聚类准则。从此这类模糊聚类蓬勃发展起来,目前已经形成庞大的体系。 第 2 章聚类分析方法 2-1 聚类分析 聚类分析就是根据对象的相似性将其分群,聚类是一种无监督学习方法,它不需要先验的分类知识就能发现数据下的隐藏结构。它的目标是要对一个给定的数据集进行划分,这种划分应满足以下两个特性:①类内相似性:属于同一类的数据应尽可能相似。②类间相异性:属于不同类的数据应尽可能相异。图2.1是一个简单聚类分析的例子。

matlab性能分析

Matlab 程序性能分析 一、简单计算程序运行时间:tic,toc—— Measure performance using stopwatch timer 基本用法:tStart=tic; any_statements; tElapsed=toc(tStart); 计时单位是“秒”;tic用于设置计时器开始,toc设置计时器结束;手册说tStart是一个64位的整数,仅用于toc参数时有意义,经测试tic是微妙级的计时器。示例: some_time = rand * 2 %% example 1: time measured by tic-toc tStart = tic; pause(some_time); tElapsed_toc = toc(tStart) %% example 2: time measured by tic-tic tStart = tic; pause(some_time); tElapsed_tic = double(tic-tStart) / 1000000 %% example 3: time measured by tic-tocs tStart = tic; pause(some_time); tElapsed_toc1 = toc(tStart) some_time = rand * 2 pause(some_time); tElapsed_toc2 = toc(tStart) tElapsed_toc_toc = tElapsed_toc2 - tElapsed_toc1 示例1展示了tic-toc的基本用法,示例2展示了只用tic实现的计时功能,示例3展示了利用一个tic和多个toc实现程序的分段计时。 二、不推荐使用的程序计时工具:cputime 和 clock & etime cputime的用法:t = cputime; any_statements; e = cputime-t clock & etime的用法:t = clock; any_statements; e = etime(clock, t) Matlab推荐用tic-toc计时,而不是这两种计时工具,具体请参考帮助文档。 三、全面分析程序运行时间:Profiler profile 只能分析Matlab代码编写的函数的运行时间(如ls,magic等),若函数非Matlab代码(如svd,dir等),无法分析其运行时间。 1、启动Profiler的三种方法 (1)从菜单栏启动:Desktop --> Profiler; (2)从Matlab的Editor中启动:Tools --> Open Profiler; (3)从命令行启动:profile -history -historysize integer-timer clock on

数学实验05聚类分析---用matlab做聚类分析

用matlab做聚类分析 Matlab提供了两种方法进行聚类分析。 一种是利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法; 另一种是分步聚类:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;(2)用linkage函数定义变量之间的连接;(3)用cophenetic函数评价聚类信息;(4)用cluster函数创建聚类。1.Matlab中相关函数介绍 1.1pdist函数 调用格式:Y=pdist(X,’metric’) 说明:用‘metric’指定的方法计算X数据矩阵中对象之间的距离。’X:一个m×n的矩阵,它是由m个对象组成的数据集,每个对象的大小为n。 metric’取值如下: ‘euclidean’:欧氏距离(默认);‘seuclidean’:标准化欧氏距离; ‘mahalanobis’:马氏距离;‘cityblock’:布洛克距离; ‘minkowski’:明可夫斯基距离;‘cosine’: ‘correlation’:‘hamming’: ‘jaccard’:‘chebychev’:Chebychev距离。 1.2squareform函数 调用格式:Z=squareform(Y,..)

说明:强制将距离矩阵从上三角形式转化为方阵形式,或从方阵形式转化为上三角形式。 1.3linkage函数 调用格式:Z=linkage(Y,’method’) 说明:用‘method’参数指定的算法计算系统聚类树。 Y:pdist函数返回的距离向量; method:可取值如下: ‘single’:最短距离法(默认);‘complete’:最长距离法; ‘average’:未加权平均距离法;‘weighted’:加权平均法; ‘centroid’:质心距离法;‘median’:加权质心距离法; ‘ward’:内平方距离法(最小方差算法) 返回:Z为一个包含聚类树信息的(m-1)×3的矩阵。 1.4dendrogram函数 调用格式:[H,T,…]=dendrogram(Z,p,…) 说明:生成只有顶部p个节点的冰柱图(谱系图)。 1.5cophenet函数 调用格式:c=cophenetic(Z,Y) 说明:利用pdist函数生成的Y和linkage函数生成的Z计算cophenet相关系数。 1.6cluster函数 调用格式:T=cluster(Z,…) 说明:根据linkage函数的输出Z创建分类。

利用matlab分析系统动态性能

利用matlab分析系统动态性能

控制系统的时域分析 一.系统阶跃响应的性能指标 表 1 系统性能指标 利用 matlab 程序求出各系统阶跃响应的性能指标及图像,如求原系统 1 的方程: num=1.05; den=conv([0.125,1],conv([0.5,1],[1,1,1])); G=tf(num,den); C=dcgain(G); [y,t]=step(G); plot(t,y) grid [Y,K]=max(y); tp=t(K) mp=100*(Y-C)/C n=1; while y(n)0.98*C)&&(y(i)<1.02*C) i=i-1; end ts=t(i)

图 1 系统 1 阶跃响应曲线图二.根据系统性能指标及图像分析系统 1.利用 Matlab 得各系统节约系统曲线,如图 2:num1=1.05; den1=conv([0.125,1],conv([0.5,1],[1,1,1])); G1=tf(num1,den1); [y1,t1]=step(G1); num2=1.05*[0.4762,1]; den2=conv([0.125,1],conv([0.5,1],[1,1,1])); G2=tf(num2,den2); [y2,t2]=step(G2); num3=1.05*[1,1]; den3=conv([0.125,1],conv([0.5,1],[1,1,1])); G3=tf(num3,den3); [y3,t3]=step(G3); num4=1.05*[0.4762,1]; den4=conv([0.25,1],conv([0.5,1],[1,1,1])); G4=tf(num4,den4); [y4,t4]=step(G4); num5=1.05*[0.4762,1]; den5=conv([0.5,1],[1,1,1]); G5=tf(num5,den5); [y5,t5]=step(G5); num6=1.05; den6=[1,1,1]; G6=tf(num6,den6);

QAM调制与解调的MATLAB实现及调制性能分析

通信原理课程设计报告书 课题名称 16QAM 调制与解调 的MATLAB 实现及调制性能分析 姓 名 学 号 学 院 通信与电子工程学院 专 业 通信工程 指导教师 李梦醒 2012年 01 月 01日 ※※※※※※※※※ ※※ ※ ※ ※ ※ 2009级通信工程专业 通信原理课程设计

16QAM调制与解调的MATLAB实现及调制性能分 析 1 设计目的 (1)掌握16QAM调制与解调的原理。 (2)掌握星座图的原理并能熟悉星座图的应用。 (3)熟悉并掌握MATLAB的使用方法。 (4)通过对16QAM调制性能的分析了解16QAM调制相对于其它调制方式的优缺点。 2 设计原理 正交振幅调制(Quadrature Amplitude Modulation,QAM)是一种振幅和相位联合键控。虽然MPSK和MDPSK等相移键控的带宽和功率方面都具有优势,即带宽占用小和比特噪声比要求低。但是由图1可见,在MPSK体制中,随着 8/ 5π 8/ 3π 8/ π 8/ 7π 8/ 9π 8/ 11π 8/ 13π

8/15π 图 1 8PSK 信号相位 M 的增大,相邻相位的距离逐渐减小,使噪声容限随之减小,误码率难于保证。为了改善在M 大时的噪声容限,发展出了QAM 体制。在QAM 体制中,信号的振幅和相位作为两个独立的参量同时受到调制。这种信号的一个码元可以表示为 0()cos() (1)k k k s t A t kT t k T ωθ=+<≤+ (2—1) 式中:k=整数;k A 和k θ分别可以取多个离散值。 式(2—1)可以展开为 00()cos cos sin sin k k k k k s t A t A t θωθω=- (2—2) 令 X k = A k cos k , Y k = -A k sin k 则式(2—1)变为 00()cos sin k k k s t X t Y t ωω=+ (2—3) k X 和k Y 也是可以取多个离散的变量。从式(2—3)看出,()k s t 可以看作是两个 正交的振幅键控信号之和。 在式(2—1)中,若k 值仅可以取 /4和-/4,A k 值仅可以取+A 和-A , 则此QAM 信号就成为QPSK 信号,如图2所示: 图2 4QAM 信号矢量图

MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法

MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法: 1.层次聚类hierarchical clustering 2.k-means聚类 这里用最简单的实例说明以下层次聚类原理和应用发法。 层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征对象之间差异的距离,例如最简单的平面上点的聚类中,最经常使用的就是欧几里得距离。 这在MATLAB中可以通过Y=pdist(X)实现,例如 >> X=randn(6,2) X = -0.4326 1.1892 -1.6656 -0.0376 0.1253 0.3273 0.2877 0.1746 -1.1465 -0.1867 1.1909 0.7258 >> plot(X(:,1),X(:,2),'bo') %给个图,将来对照聚类结果把 >> Y=pdist(X) Y = Columns 1 through 14 1.7394 1.0267 1.2442 1.5501 1.6883 1.8277 1.9648 0.5401 2.9568 0.2228 1.3717 1.1377 1.4790 1.0581 Column 15

2.5092 例子中X数据集可以看作包含6个平面数据点,pdist之后的Y是一个行向量,15个元素分别代表X 的第1点与2-6点、第2点与3-6点,......这样的距离。那么对于M个点的数据集X,pdist之后的Y 将是具有M*(M-1)/2个元素的行向量。Y这样的显示虽然节省了内存空间,但对用户来说不是很易懂,如果需要对这些距离进行特定操作的话,也不太好索引。MATLAB中可以用squareform把Y转换成方阵形式,方阵中位置的数值就是X中第i和第j点之间的距离,显然这个方阵应该是 个对角元素为0的对称阵。 >> squareform(Y) ans = 0 1.7394 1.0267 1.2442 1.5501 1.6883 1.7394 0 1.8277 1.9648 0.5401 2.9568 1.0267 1.8277 0 0.2228 1.3717 1.1377 1.2442 1.9648 0.2228 0 1.4790 1.0581 1.5501 0.5401 1.3717 1.4790 0 2.5092 1.6883 2.9568 1.1377 1.0581 2.5092 0 这里需要注意的是,pdist可以使用多种参数,指定不同的距离算法。help pdist把。 另外,当数据规模很大时,可以想象pdist产生的Y占用内存将是很吓人的,比如X有10k个数据点,那么X占10k*8*2Bytes=160K,这看起来不算啥,但是pdist后的Y会有10k*10k/2*8Bytes=400M 。怕了把,所以,废话说在前面,用MATLAB的层次聚类来处理大规模数据,大概是很不合适的。 (2) 确定好了对象间的差异度(距离)后,就可以用Z=linkage(Y)来产生层次聚类树了。 >> Z=linkage(Y) Z = 3.0000 4.0000 0.2228 2.0000 5.0000 0.5401 1.0000 7.0000 1.0267

(完整版)功率谱估计性能分析及Matlab仿真

功率谱估计性能分析及Matlab 仿真 1 引言 随机信号在时域上是无限长的,在测量样本上也是无穷多的,因此随机信号的能量是无限的,应该用功率信号来描述。然而,功率信号不满足傅里叶变换的狄里克雷绝对可积的条件,因此严格意义上随机信号的傅里叶变换是不存在的。因此,要实现随机信号的频域分析,不能简单从频谱的概念出发进行研究,而是功率谱[1]。 信号的功率谱密度描述随机信号的功率在频域随频率的分布。利用给定的 N 个样本数据估计一个平稳随机信号的功率谱密度叫做谱估计。谱估计方法分为两大类:经典谱估计和现代谱估计。经典功率谱估计如周期图法、自相关法等,其主要缺陷是描述功率谱波动的数字特征方差性能较差,频率分辨率低。方差性能差的原因是无法获得按功率谱密度定义中求均值和求极限的运算[2]。分辨率低的原因是在周期图法中,假定延迟窗以外的自相关函数全为0。这是不符合实际情况的,因而产生了较差的频率分辨率。而现代谱估计的目标都是旨在改善谱估计的分辨率,如自相关法和Burg 法等。 2 经典功率谱估计 经典功率谱估计是截取较长的数据链中的一段作为工作区,而工作区之外的数据假设为0,这样就相当将数据加一窗函数,根据截取的N 个样本数据估计出其功率谱[1]。 周期图法( Periodogram ) Schuster 首先提出周期图法。周期图法是根据各态历经的随机过程功率谱的定义进行的谱估计。 取平稳随机信号()x n 的有限个观察值(0),(1),...,(1)x x x n -,求出其傅里叶变换 1 ()()N j j n N n X e x n e ω ω---==∑ 然后进行谱估计

自编码器

自编码器 1背景介绍 大数据时代,结合智能计算的大数据分析成为热点,大数据技术结合深度学习算法成为大数据的分析及处理的核心技术之一,深度学习算法的学习能力不断提升必将推动数据科学的不断发展。深度学习目前受到了前所未有的关注,它是机器学习研究的新领域,掀起了机器学习领域的第二次浪潮,受到了学术界和工业界的高度关注。深度学习概念由Geoffrey Hinton等人于2006年提出来的,深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度学习架构由多层人工神经网路组成,人工神经网络是受到了大脑分层的结构启发,基于大脑神经元激活或抑制进行信号传输的原理设计出来的神经网络模型。深度学习是一种无监督学习算法,它无需人工输入或标注特征,而是通过海量数据自动学习特征。深度学习相对于浅层学习的优势在于深度学习通过深层非线性神经网络结构对复杂函数进行逼近,并且可以从少数样本集合中找到学习到数据集本质特征。 深度学习的核心思想:把深度学习分层模型看作一个网络,则 ①无监督学习用于每一层网络的预训练; ②预训练时,每次只训练一层网络,上一层网络的输出作为下一层网络的 输入; ③用监督学习去调整所有的层。 2自动编码器的原理 自动编码器是Rumelhart于1986年提出来的,是一个典型的三层神经网络,一个是输入层,一个隐藏层和一个输出层,其中输入层和输出层有相同的维度,

都为n 维,隐藏层的维度为m 维。其网络结构示意图如图1所示。 X Y 输入层输出层 m p R ∈ 图1自动编码器结构示意图 从输入层到隐藏层是编码过程,从隐藏层到输出层是解码过程,设f 和g 分别表示编码函数和解码函数,则: h (x)s (wx p) f f ==+(2-1) (x)s (wx )g y g q ==+ (2-2) 其中s f 为编码器激活函数,通常取Sigmod 函数,即1 f(x)1x e -=+,s g 为解码器 激活函数,通常取Sidmod 函数或者恒等函数,输入层和隐藏层之间的权值矩阵 为w ,隐藏层与输出层之间的权值矩阵为w ,并且T w w = ,自动编码器的参数 ={w,p,q}θ。 输出层的输出数据Y 可以看作是对输入层的输入数据X 预测,自动编码器可以利用反向传播算法调整神经网络的参数,当输出层的输出数据Y 与输入层的输入层数据X 的接近程度可以接受的时候,那么该自动编码器就保留了原始输入数据的大部分信息,此时自动编码器神经网络就训练好了。定义重构误差函

matlab实现Kmeans聚类算法

matlab实现Kmeans聚类算法 1.简介: Kmeans和应用于混合高斯模型的受限EM算法是一致的。高斯混合模型广泛用于数据挖掘、模式识别、机器学习、统计分析。Kmeans 的迭代步骤可以看成E步和M步,E:固定参数类别中心向量重新标记样本,M:固定均值只考虑(估计)了均值,而没有估计类别的方差,所以聚类的结构比较适合于特征协方差相等的类别。 Kmeans在某种程度也可以看成Meanshitf的特殊版本,Meanshift 是所以Meanshift可以用于寻找数据的多个模态(类别),利用的是梯度上升法。在06年的一篇CVPR文章上,证明了Meanshift方法是牛顿拉夫逊算法的变种。Kmeans和EM算法相似是指混合密度的形式已知(参数形式已知)情况下,利用迭代方法,在参数空间中搜索解。而Kmeans和Meanshift相似是指都是一种概率密度梯度估计的方法,不过是Kmean选用的是特殊的核函数(uniform kernel),而与混合概率密度形式是否已知无关,是一种梯度求解方式。 k-means是一种聚类算法,这种算法是依赖于点的邻域来决定哪些点应该分在点,也可以对高维的空间(3维,4维,等等)的点进行聚类,任意高维的空间都可以。 上图中的彩色部分是一些二维空间点。上图中已经把这些点分组了,并使用了不同的颜色对各组进行了标记。这就是聚类算法要做的事情。 这个算法的输入是: 1:点的数据(这里并不一定指的是坐标,其实可以说是向量)

2:K,聚类中心的个数(即要把这一堆数据分成几组) 所以,在处理之前,你先要决定将要把这一堆数据分成几组,即聚成几类。但并不是在所有情况下,你都事先就能知道需要把数据聚成几类的。意味着使用k-means就不能处理这种情况,下文中会有讲解。 把相应的输入数据,传入k-means算法后,当k-means算法运行完后,该算法的输出是: 1:标签(每一个点都有一个标签,因为最终任何一个点,总会被分到某个类,类的id号就是标签) 2:每个类的中心点。 标签,是表示某个点是被分到哪个类了。例如,在上图中,实际上有4中“标签”,每个“标签”使用不同的颜色来表示。所有黄色点我们可以用标签以看出,有3个类离的比较远,有两个类离得比较近,几乎要混合在一起了。 当然,数据集不一定是坐标,假如你要对彩色图像进行聚类,那么你的向量就可以是(b,g,r),如果使用的是hsv颜色空间,那还可以使用(h,s,v),当然肯定可以有不同的组合例如(b*b,g*r,r*b) ,(h*b,s*g,v*v)等等。 在本文中,初始的类的中心点是随机产生的。如上图的红色点所示,是本文随机产生的初始点。注意观察那两个离得比较近的类,它们几乎要混合在一起,看看算法是如何将它们分开的。 类的初始中心点是随机产生的。算法会不断迭代来矫正这些中心点,并最终得到比较靠5个中心点的距离,选出一个距离最小的(例如该点与第2个中心点的距离是5个距离中最小的),那么该点就归属于该类.上图是点的归类结果示意图. 经过步骤3后,每一个中心center(i)点都有它的”管辖范围”,由于这个中心点不一定是这个管辖范围的真正中心点,所以要重新计算中心点,计算的方法有很多种,最简单的一种是,直接计算该管辖范围内所有点的均值,做为心的中心点new_center(i). 如果重新计算的中心点new_center(i)与原来的中心点center(i)的距离大于一定的阈值(该阈值可以设定),那么认为算法尚未收敛,使用new_center(i)代替center(i)(如图,中心点从红色点

聚类分析matlab程序设计代码

function varargout = lljuleifenxi(varargin) % LLJULEIFENXI MATLAB code for lljuleifenxi.fig % LLJULEIFENXI, by itself, creates a new LLJULEIFENXI or raises the existing % singleton*. % % H = LLJULEIFENXI returns the handle to a new LLJULEIFENXI or the handle to % the existing singleton*. % % LLJULEIFENXI('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in LLJULEIFENXI.M with the given input arguments. % % LLJULEIFENXI('Property','Value',...) creates a new LLJULEIFENXI or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before lljuleifenxi_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to lljuleifenxi_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 lljuleifenxi % Last Modified by GUIDE v2.5 07-Jan-2015 18:18:25 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @lljuleifenxi_OpeningFcn, ... 'gui_OutputFcn', @lljuleifenxi_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before lljuleifenxi is made visible. function lljuleifenxi_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

利用Matlab软件实现聚类分析范文

§8.利用Matlab和SPSS软件实现聚类分析 1. 用Matlab编程实现 运用Matlab中的一些基本矩阵计算方法,通过自己编程实现聚类算法,在此只讨论根据最短距离规则聚类的方法。 调用函数: min1.m——求矩阵最小值,返回最小值所在行和列以及值的大小 min2.m——比较两数大小,返回较小值 std1.m——用极差标准化法标准化矩阵 ds1.m——用绝对值距离法求距离矩阵 cluster.m——应用最短距离聚类法进行聚类分析 print1.m——调用各子函数,显示聚类结果 聚类分析算法 假设距离矩阵为vector, a阶,矩阵中最大值为max,令矩阵上三角元素等于max 聚类次数=a-1,以下步骤作a-1次循环: 求改变后矩阵的阶数,计作c

求矩阵最小值,返回最小值所在行e和列f以及值的大小g for l=1:c,为vector(c+1,l)赋值,产生新类 令第c+1列元素,第e行和第f行所有元素为,第e列和第f列所有元素为max 源程序如下: %std1.m,用极差标准化法标准化矩阵 function std=std1(vector) max=max(vector); %对列求最大值 min=min(vector); [a,b]=size(vector); %矩阵大小,a为行数,b为列数 for i=1:a for j=1:b std(i,j)= (vector(i,j)-min(j))/(max(j)-min(j)); end end %ds1.m,用绝对值法求距离 function d=ds1(vector); [a,b]=size(vector); d=zeros(a); for i=1:a for j=1:a for k=1:b d(i,j)=d(i,j)+abs(vector(i,k)-vector(j,k)); end end end fprintf('绝对值距离矩阵如下:\n'); disp(d) %min1.m,求矩阵中最小值,并返回行列数及其值 function [v1,v2,v3]=min1(vector);%v1为行数,v2为列数,v3为其值 [v,v2]=min(min(vector')); [v,v1]=min(min(vector)); v3=min(min(vector));

用MATLAB进行控制系统的动态性能的分析报告

用MATLAB 进行控制系统的动态性能的分析 初始条件:已知三阶系统的闭环传递函数为 )64.08.0)(11 (7 .2)(2+++= s s s a s G 分析系统的动态性能。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、 用MATLAB 函数编程,求系统的动态性能指标。 2、 设64.08.02++s s 的根是系统的主导极点,编制程序,求系统的动态性能指标。 3、 用MATLAB 编制程序分析a =0.84,a =2.1,a =4.2系统的阶跃响应曲线,分析高阶系统忽略附加极点,近似为二阶系统的条件。 4、课程设计说明书中要求写清楚计算分析的过程,列出MATLAB 程序和MATLAB 输出。说明书的格式按照教务处标准书写。 时间安排:

指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日 用MATLAB 进行控制系统的动态性能的分析 1 MATLAB 函数编程 1.1 传递函数的整理 已知三阶系统的闭环传递函数为: )64.08.0)(11 (7 .2)(2+++= s s s a s G 整理成一般式可以得到: G(s)= a s a s a s a 64.0)8.064.0()8.0(7.223+++++, 其中a 为未知参数。从一般式可以看出系统没有零点,有三个极点(其中一个实数极点和一对共轭复数极点)。 1.2 动态性能指标的定义 上升时间r t :当系统的阶跃响应第一次达到稳态值的时间。上升时间是系统 响应速度的一种度量。上升时间越短,响应速度越快。 峰值时间p t :系统阶跃响应达到最大值的时间。最大值一般都发

实验一基于MATLAB的二阶系统动态性能分析

实验一基于MATLAB 的二阶系统动态性能分析 一、实验目的 1、观察学习二阶控制系统的单位阶跃响应、脉冲响应。 2、记录单位阶跃响应曲线、脉冲响应曲线。 3、掌握时间响应分析的一般方法。 4、掌握系统阶跃响应曲线与传递函数参数的对应关系。 二、实验设备 PC 机,MATLAB 仿真软件。 三、实验内容1、作以下二阶系统的单位阶跃响应曲线 10 10)(2++=s s s G 2、分别改变该系统的ζ和n ω,观察阶跃响应曲线的变化。 3、作该系统的脉冲响应曲线。 四、实验步骤1、二阶系统为 10)(++=s G (1)键人程序观察并纪录阶跃响应曲线 (2)健入 damp(den) 计算系统的闭环根、阻尼比、无阻尼振荡频率,并作记录。记录实际测取的峰值大小、C max (t p )、峰值时间t p 、过渡时间t s 并与理论值相比较。实际值 峰值C max (t p ) 峰值时间t p 过渡时间 t s %5±%2±2、修改参数,分别实现ζ=1,ζ=2的响应曲线,并作记录。程序为: n0=10;d0=[1110];step(n0,d0) %原系统ζ=0.316/2 hold on %保持原曲线 n1=n0,d1=[16.3210];step(n1,d1) %ζ=1 n2=n0;d2=[112.6410];step(n2,d2)

%ζ=2 修改参数,写出程序分别实现1n ω=01n ω和2n ω=20n ω的响应曲线,并作记录。%10 0=n ω3、试作以下系统的脉冲响应曲线,分析结果 10)(++=s G 10 2102)(21+++=s s s s G ,有系统零点情况,即s=-5。

FCMClust(模糊c均值聚类算法MATLAB实现)

function [center, U, obj_fcn] = FCMClust(data, cluster_n, options) % FCMClust.m 采用模糊C均值对数据集data聚为cluster_n类 % 用法: % 1. [center,U,obj_fcn] = FCMClust(Data,N_cluster,options); % 2. [center,U,obj_fcn] = FCMClust(Data,N_cluster); % 输入: % data ---- nxm矩阵,表示n个样本,每个样本具有m的维特征值 % N_cluster ---- 标量,表示聚合中心数目,即类别数 % options ---- 4x1矩阵,其中 % options(1): 隶属度矩阵U的指数,>1 (缺省值: 2.0) % options(2): 最大迭代次数(缺省值: 100) % options(3): 隶属度最小变化量,迭代终止条件(缺省值: 1e-5) % options(4): 每次迭代是否输出信息标志(缺省值: 1) % 输出: % center ---- 聚类中心 % U ---- 隶属度矩阵 % obj_fcn ---- 目标函数值 % Example: % data = rand(100,2); % [center,U,obj_fcn] = FCMClust(data,2); % plot(data(:,1), data(:,2),'o'); % hold on; % maxU = max(U); % index1 = find(U(1,:) == maxU); % index2 = find(U(2,:) == maxU); % line(data(index1,1),data(index1,2),'marker','*','color','g'); % line(data(index2,1),data(index2,2),'marker','*','color','r'); % plot([center([1 2],1)],[center([1 2],2)],'*','color','k') % hold off; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% if nargin ~= 2 & nargin ~= 3, %判断输入参数个数只能是2个或3个 error('Too many or too few input arguments!'); end data_n = size(data, 1); % 求出data的第一维(rows)数,即样本个数 in_n = size(data, 2); % 求出data的第二维(columns)数,即特征值长度 % 默认操作参数 default_options = [2; % 隶属度矩阵U的指数 100; % 最大迭代次数 1e-5; % 隶属度最小变化量,迭代终止条件

相关主题
文本预览
相关文档 最新文档