当前位置:文档之家› 基于MATLAB的MSK调制解调实现

基于MATLAB的MSK调制解调实现

基于MATLAB的MSK调制解调实现
基于MATLAB的MSK调制解调实现

《基于MA TLAB的MSK调制解调实现》第1 页共15 页基于MATLAB的MSK调制解调实现

摘要通过这次课程设计熟悉MATLAB中M文件的使用方法,并在掌握MSK调制解调原理的基础上,编写出MSK调制解调程序。绘制出MSK信号解调前后在时域和频域中的波形,并观察解调前后频谱有何变化以加深对MSK信号解调原理的理解。对信号叠加噪声,并进行解调,绘制出解调前后信号的时频波形,改变噪声功率进行解调,分析噪声对信号传输造成的影响。该课程设计使用的平台为MATLAB,当输入随机序列后能够得到正确的仿真结果。同时课本上的理论识得到验证。

关键词时频波形;M文件;MATLAB7.1;调制解调

1 引言

本课程设计主要用于MSK信号的调制与解调,同时进一步了解MSK信号的的解调调制原理以及其性能。再次基础上进一步对信号叠加噪声,并绘制相应波形,同时进行分析。

1.1 课程设计目的

利用MATLAB集成环境下的M文件,编写程序来实现MSK的调制解调,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。通过这次课程设计进一步加深了我对最小二进制相移键控(MSK)调制解调性能的理解与掌握,同时将课堂上学到的理论知识用于实践。增强了我在模拟仿真方面的能力,为以后系统开发和通信系统仿真打下了良好的基础。

1.2课程设计要求

通过课程设计,掌握M文件的使用,同时进一步加深MSK调制解调的原理,在此基础上编写出MSK调制解调的程序。并绘制出MSK信号解调前后在时域和频域中

的波形,观察解调前后频谱有何变化以加深对MSK信号解调原理的理解。通过这一些之后再加上噪声,对信号解调,并绘制出解调前后信号的时频波形,改变噪声功率进行解调,分析噪声对信号传输造成的影响。

1.3课程设计步骤

先定义MSK输入信号的参数然后用dmod函数做输入的调制,之后画相应的频谱图。再用dedmod做解调输出。然后加入噪声,再进行解调输出。

1. 定义载波频率Fs,输出信号频率Fd,采样频率Fs。

2.设置输入信号X,同时做信号的调制。

3. 画出相应的波形图。

4. 做输出信号的解调波形,同时画解调波形图。

5. 加入高斯白噪声。再进行信号的解调输出,画相应的波形。

6. 对结果进行比较分析。

1.4课程设计平台

本课程设计中应用M文件设计MSK信号调制解调程序。所以在本课程设计中有必要对MATLAB进行简要的描述。

MATLAB语言是当今国际上科学界最具影响力、也是最具活力的软件。它具有强大的数学运算能力、方便实用的绘图功能及语言的高度集成性。MATLAB是矩阵实验室(Matrix Laboratory)之意。MATLAB除具备卓越的数值计算能力外,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能。

MATLAB的出现使得通信系统的仿真能够用计算机模拟实现,免去构建实验系统的不便,而且操作十分简便,只需要输入不同的参数就能得到不同情况下系统的性能,而且在结果的观测和数据的存储方面也比传统的方式有很多优势。因而MATLAB在通信仿真领域得到越来越多的应用。MATLAB的一大特点是提供了很多专用的工具箱和模块库,例如通信工具箱和模块库、数字信号处理工具箱和模块库、控制工具箱和模块库等,MATLAB在这些工具箱和模块库中提供了很多常用的函数和模块,使得仿真更容易实现。

在本课程设计里,我们主要利用MATLAB中的M文件实现MSK解调器的设计,对解调前后波形进行比较,绘制时域波形。

2 MSK 调制解调原理

MSK 信号是一种包络恒定、相位连续、带宽最小并且严格正交的2FSK 信号,其

波形如图2-1所示。

图2-1 MSK 信号的波形图

2.1 MSK 基本原理

MSK 信号是一种相位连续、包络恒定并且占用带宽最小的二进制正交FSK 信号。它

的第k 个码元可以表示为:

())(k k s k t T a t w t s φπ++=2cos ()kT t T k ≤<-1 (2-1)

式中,s s f w π2=为视在角载频;1±=k a ;T 为第k 个码元确定的初始相位。

由上式可以看出,当1+=k a 时,码元频率1f 等于T f s 4/1+;当1-=k a 时,码元频

率0f 等于T f s 4/1-。故1f 和0f 的距离等于T 2/1。这是2FSK 信号最小频率间隔。

MSK 信号具有特点如下:①MSK 信号是正交信号;②其波形在码元间是连续的;

③其包络是恒定不变的;④其附加相位在一个码元持续时间内线性地变化2/π±;⑤调

制产生的频率偏移等于T 4/1±Hz ;⑥在一个码元持续时间内含有的载波周期数等于1/4

的整数倍。

2.2 MSK 正交表示法

式(2-1)可以用频率为s f 的两个正交分量表示。将式(2-1)进行三角公式变换,得到:

t w T t q t w T t p t s s k s k k sin 2sin cos 2cos )(ππ-= ()kT t T k ≤<-1 (3-1)

式中, 1c o s ±==k k p ? 1cos ±==k k k a q ? (3-2)

式(2-2)表示,此MSK 信号可以分解为同相分量(I )和正交分量(Q )两部分。

2.3 MSK 信号的调制

由式(2-2)可知,MSK 信号可以用两个正交的分量表示。根据该式构成 的MSK

信号的产生方框图如图 2-2所示。

图2-2 MSK 调制原理图

2.4 MSK 信号的解调

由于MSK 信号是最小二进制FSK 信号,所以它可以采用解调FSK 信号的相干法

和非相干法解调。

图2-3是MSK 信号的解调原理框图。

图2-3 MSK 信号的解调原理图

3 仿真实现过程

3.1 MSK 信号的产生

因为MSK 信号可以用两个正交的分量表示:

t w T t q t w T t p t s s S k c s k k s i n 2s i n c o s 2c o s )(ππ-= (k-1)Ts <t≤kTs

式中:右端第1项称作同相分量,其载波为t w c cos ;第2项称作正交分量,其载波为

t w c sin 。

在仿真时先设置输入信号的参数:载波频率Fc 调制后,数字信号速率Fd,模拟信号

采样率Fs 。之后产生要调制的随机数字信号x;然后用dmod 函数进行调制,产生调制信

号。dmod 函数是MATLAB 中一个常用来进行信号调制的函数,它后面的参数包括被

调制信号,载波信号的频率,输出信号的速率以及采样速率和所进行调制的函数。

部分程序代码和仿真图如下所示:

M=2; %定义输入随机信号的参数

Fc=20; %载波信号的频率Fc 为20;

Fd=10; %输出信号的速率Fd 为10;

Fs=200; %采样速率Fs 为200;

x=randint(1,10000); %产生随机的输入序列

y=dmod(x,Fc,Fd,Fs,'msk'); %对用dnod函数对输入的随机序列进行调制

图3-1 MSK调制信号的波形

由调制波形图可以看出MSK的调制信号特性与2FSK调制信号的特性非常的相似,即:当输入信号为“1”时,调制后的波形比输入信号为“0”时的波形要密。同时MSK信号的包络是恒定的,相位则是连续的。带宽相对于一般的2FSK信号要小,而且正交。

3.2 MSK解调实现

由于MSK信号是最小二进制FSK信号,所以它可以采用解调FSK信号的相干法和非相干法解调。

在进行程序仿真时,用ddemod函数进行调制信号的解调。同时画出解调前后的时域与频域的波形图。在画频域的波形图时先对已调信号与解调信号进行DTFT变换,之后画出相应的波形。ddemod函数是与dmod函数相对应,用来对已调信号进行解调的。其后面的参数与dmod函数后的一模一样。

部分程序与仿真波形图如下所示:

z=ddemod(y,Fc,Fd,Fs,'msk'); %对调制后的MSK信号进行解调

图3-2 MSK信号的解调波形

由解调信号的时域波形可以看出,解调后的波形与原始输入信号的波形完全一致。同时不难发现解调后的信号很稳定。

n1=1:1:length(y);w=[0:1:1000]*pi/500;

n2=1:1:10000;w=[0:1:1000]*pi/500; %定义频域参数n1为y的长度,n2为输

入原始信号的长度

Y=y*exp(-j*n1'*w); %对已调信号进行DTFT变换

Z=z*exp(-j*n2'*w); %对解调信号进行DTFT变换magY=abs(Y);

magZ=abs(Z);

图3-3 MSK信号解调前后的频域波形

由解调后的频域波形可以看出MSK信号的稳定性很好,说明MSK信号的抗噪声性能很强。

图3-4 调制前解调后的频域波形

通过调制前和解调后的频域波形比较,发现解调非常的成功,波形被完整无误的输出来。

3.3 叠加噪声的MSK解调

由于信号在传输的过程中难免要受到外来噪声的影响,所以在进行通信仿真时务必要在理想的模拟通信系统中加入高斯白噪声对系统进行影响,以此来判断一个通信系统抗噪声性能的好坏。

在这次课程设计中,我利用awagn函数对已调信号加入信噪比为0.001的高斯白噪声。然后对加入了噪声的已调信号进行解调,同时画出其时域与频域的波形,将其与没有加噪声的调制信号进行比较,不难发现:加入噪声后对已调信号的影响很大,但对解调信号而言,噪声对解调后的影响还是有一定限度的。这说明MSK解调系统的抗噪声性能很强。

仿真的部分程序与相应的仿真波形图如下所示:

y1=awgn(y,0.001); %对已调信号加入高斯白噪声

z1=ddemod(y,Fc,Fd,Fs,'msk'); %对加入高斯白噪声的调制信号进行解调

[num1,ratio1]=symerr(x,z2) %对加入噪声后解调的信号进行误码率的测定通过symerr函数对解调信号的误码率进行测定,得到的误码率为0.0024.因为输入的随机序列长度为10000,错了24个。说明MSK信号的抗噪声性能很强。当将信噪比变为1时,输出的误码率很快发生了变化,由原来的0.0024变为了6.0000e-004.图形也同时发生了变化。通过图形的比较,可以发现噪声对调制信号的影响很大,但通过解调后影响相对减小了很多。

图3-5 信噪比为0.001的 MSK信号加噪声解调前后的时域波形

图3-6 信噪比为1的MSK信号加噪声解调前后的时域波形

Y1=y1*exp(-j*n1'*w); %对加噪声后的已调信号进行DTFT变换Z1=z1*exp(-j*n2'*w); %对加噪声后的解调信号进行DTFT变换magY1=abs(Y1);

magZ1=abs(Z1);

图3-7 信噪比为2的MSK信号加噪声解调前后的频域波形

在多次改变信噪比后,将信噪比与误码率联合做了如图3-8所式的波形图。

图3-8 信噪比与产生误码率曲线图

通过图形可知,随着系统信噪比的增加,解调后输出的误码率随之减小,当信噪比增加到一定程度时,误码率变为0。说明噪声对信号的影响在一定程度上是可以减小,但很难消除,因为每一个系统都不可能是理想系统,总会受到外界的干扰。

4 遇到的问题及解决办法

遇到的问题一:在设计程序时由于一开始使用的不是随机序列,同时MSK信号的抗噪声性能很强,当输入的是有限个序列时,很难判断出噪声对信号的影响。所以在加入噪声后再进行解调时根本就无法发现噪声对信号的影响。

解决办法:利用randint函数来产生100个随机序列,然后再在调制好了的信号上加入高斯白噪声,之后对调制信号解调。这样发现噪声对信号的一点点影响。

遇到的问题二:在画解调信号前后的频域波形时,由于忽略了调制信号和解调后的信号长度不一致,所以只设置了一个参数n1,当进行仿真画图时一直都无法画出来。

解决办法:在老师的指导下,我又重新检查了一变程序。后来发现错误,并重新添加了参数n2,然后在进行DTFT转换后画图得到了正确的结果。

遇到的问题三:在加入高斯白噪声时,由于不清楚awgn这个函数,所以我一直按照参考书上的方法进行噪声的添加,但噪声却一直没有成功的添加。

解决办法:在老师的知道下,我通过MATLAB里的help帮我很快了解了awgn函数,后来成功加入噪声也是可想而知的了。

5 结束语

这次通信原理课程设计虽然不是上大学以来第一次做课程设计,但它却是最成功的一次。这次课程设计耗时短,但得出的结果却很正确。在以往的课程设计中,耗了很多时间也并不一定能够得到正确的结果。

课程设计本来就是锻炼我们的动手能力,同时是一个将我们在课堂上学到的理论知识用于实践的平台。这次通信原理课程设计很到的达到了这样的目的。它不仅使我的理论知识的到了实践和加深,同时也让我从另一个角度去理解2FSK信号和MSK信号。当我接到老师给我们的任务书时,我当时头都大了。看到是MSK信号的调制与解调,开始有点茫然。因为我们在通信原理课上根本就没有提到过什么MSK,后来通过图书馆的一些参考书和我们的教材我才发现原来MSK信号是2FSK信号的一个最简单的特例。慢慢的通过2FSK信号的特性,我也了解了很多关于MSK信号的特性,比如: MSK 信号是一种相位连续、包络恒定并且占用带宽最小的二进制正交FSK信号。通过这次课程设计不仅仅加强了我在通信原理这一块的了解,同时也进一步提高了我MATLAB 的编程能力以及对数字信号里频域与时域的图形的画法。更重要的是让我懂得了在遇到挫折时不要轻易说出放弃两个字,因为在很多时候事情总是“峰回路转疑无路,柳暗花明又一村”。所以当我们遇到挫折时第一个想到的不应该是放弃,而是想如何将遇到的困难解决。成功不会很轻易的来到我们的身边,但我们没有付出足够的努力时,成功永远都是离我们那么的远。在机房写报告的时候,由于我的粗心,没有随时备份写好了的报告。本来快完了的报告结果机子突然关机了,里面的内容什么都没有了。当时很是郁闷,搞了这么久,居然一下就全没了。可是回到寝室想,没都没了气还有个屁用啊!所以二话没说又重新开始写报告,没想到很快就将它搞定了。

这次课程设计的够程中虽然也遇到了几个棘手的问题,但通过我查阅资料,以及在老师的指导和同学的帮助下很快的将问题给解决了。在这里我对在课程设计中帮助我的老师和同学表示由衷的感谢!

参考文献

[1] 黄文梅, 熊桂林, 杨勇.信号分析与处理—MATLAB语言及应用. 长沙: 国防科技大学出版社, 2000.

[2] 唐向宏, 岳恒立, 郑雪峰. MATLAB及在电子信息类课程中的应用.北京: 电子工业出版社, 2006, 8.

[3] 邓华. MATLAB通信仿真及应用实例详解. 人民邮电出版社, 2003.

[4] 樊昌信,曹丽娜.通信原理.国防工业出版社,2006.2

[5] 孙屹.MATLAB通信仿真开发手册.国防工业出版社.北京:2005

附录:MSK信号调制解调的源程序代码

%程序名称:msk_xie.m

%程序功能:利用MATLAB中的M文件编写程序,实现MSK信号的调制与解调%程序作者:谢理义

%最后修改日期:2009-01-16

%画时域波形的程序代码:

M=2; %定义输入随机信号的参数

Fc=20;

Fd=10;

Fs=200;

t=0:500;

x=randint(1,100); %产生随机的输入序列

y=dmod(x,Fc,Fd,Fs,'msk'); %对输入的随机序列进行调制

figure(1); %第一张图画调制前后的波形

subplot(2,1,1),stem(x),title('调制前的输入波形');

subplot(2,1,2), (t,y(1:501)),title('调制后的输出波形'); axis([0 500 -1 1])

z=ddemod(y,Fc,Fd,Fs,'msk'); %对调制后的MSK信号进行解调

figure(2); %第二张图画解调前后的时域波形subplot(2,1,1),plot(y),title('解调前的波形'); axis([0 500 -1 1])

subplot(2,1,2),stem(z),title('解调后的波形'); axis([0 99 0 1])

y1=awgn(y,0.001); %对已调信号加入高斯白噪声

z1=ddemod(y,Fc,Fd,Fs,'msk'); %对加入高斯白噪声的调制信号进行解调[num,ratio]=symerr(x,z1)

figure(3); %第三张图画加噪声解调前后的波形图subplot(2,1,1),plot(y1),title('加噪声后解调前的波形'); axis([0 500 -1 1]) subplot(2,1,2),stem(z1),title('加噪声后解调后的波形'); axis([0 99 0 1])

画频域波形的代码:

n1=1:1:length(y);w=[0:1:1000]*pi/500; %定义频域参数

n2=1:1:100;w=[0:1:1000]*pi/500;

Y=y*exp(-j*n1'*w); %对已调信号进行DTFT变换

Z=z*exp(-j*n2'*w); %对解调信号进行DTFT变换

magY=abs(Y);

magZ=abs(Z);

figure(4); %第四张图画解调前后的频域波形图subplot(2,1,1),plot(w/pi,magY),title('解调前的频域波形')

subplot(2,1,2),plot(w/pi,magZ),title('解调后的频域波形')

Y1=y1*exp(-j*n1'*w); %对加噪声后的已调信号进行DTFT变换Z1=z1*exp(-j*n2'*w); %对加噪声后的解调信号进行DTFT变换magY1=abs(Y1);

magZ1=abs(Z1);

figure(5); %第五张图画加噪声解调前后的频域波形subplot(2,1,1),plot(w/pi,magY1),title('加噪声后解调前的频域波形')

subplot(2,1,2),plot(w/pi,magZ1),title('加噪声后解调后的频域波形')

figure(6);

subplot(2,1,1),plot(w/pi,magX),title('调制前的频域波形')

subplot(2,1,2),plot(w/pi,magZ),title('解调后的频域波形')

信噪比与误码率的画图程序:

x=[-10 -8 -5 -4 -3 -1 0 2 3];

y=[0.2628 0.1923 0.0761 0.0426 0.0254 0.0048 0.0020 2.0000e-004 0];

semilogy(x,y)

聚类分析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函数返回的距离向量;

基于MATLAB的FSK调制解调实现完整版

目录 一. FSK理论知识………………………………………………… 1.1FSK概念………………………………………………………………… 1.22FSK信号的波形及时间表示式………………………………………… 1.32FSK信号的产生方法…………………………………………………… 1.42FSK信号的功率谱密度………………………………………………… 1.52FSK信号的解调………………………………………………………… 1.6FSK的误码性能…………………………………………………………… 二.用MATLAB进行FSK原理及误码性能仿真……… 三、结论…………………………………………… 四、参考文献…………………………………………、 五、源程序……………………………………………

1、FSK理论知识 频率调制的最简单形式是二进制频率键控(FSK,frequency-shift keying)。FSK是调制解调器通过电话线路发送比特的方法。每个比特被转换为一个频率,0由较低的频率表示,1由较高的频率表示。 1.1、FSK概念 传“0”信号时,发送频率为f1的载波; 传“1”信号时,发送频率为f2的载波。可见,FSK是用不同频率的载波来传递数字消息的。 实现模型如下图: 1.2、2FSK信号的波形及时间表示式 根据上图模型的实现可以得到2FSK的信号波形如图:

2FSK信号的时间表达式为: 由以上表达式可见,2FSK信号由两个2ASK信号相加构成。 注意:2FSK有两种形式: (1)相位连续的2FSK; (2)相位不连续的2FSK。 在这里,我们只讨论相位不连续的频移键控信号,这样更具有普遍性。 1.3、2FSK信号的产生方法 2FSK信号的产生方法:2FSK信号可以两类方法来产生。 一是采用模拟调频的方法来产生(图1);另一种方法是采用键控法(图2); 图1.3-1 图1.3-2 1.4、2FSK信号的功率谱密度

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 SIMULINK的FM调制解调

摘要 在模拟通信系统中,由模拟信源产生的携带有信息的消息经过传感器转换成电信号。模拟基带信号在经过调制将低通频谱搬移到载波频率上适应信道,最终解调还原成电信号。本文应用了频率调制法产生调制解调信号。本论文中主要通过对SIMULINK工具箱的学习和使用,利用其丰富的模板以及本科对通信原理知识的掌握,完成了FM信号的调制与解调,以及用SIMULINK进行设计和仿真。首先利用简单的正玄波信号发生器作为信源,对模拟信号进行FM调制解调原理的仿真。 关键词:调制解调;FM ;MATLAB;SIMULINK仿真

Abstract In the simulation of communication systems, generated by the analog source carrying a message through the sensor into electrical signals. Analog baseband signal after the modul- -ation of the low pass spectrum to carrier frequency to adapt to the channel, the final reducti- -on into electrical signal demodulation. This paper applied the frequency modulation method to generate the signal modulation and demodulation. Mainly through the study and use of SIMULINK toolbox in this thesis, with its rich template and undergraduate course on comm--unication theory knowledge,the modulation and demodulation of FM signal, as well as the design and simulation with SIMULINK. Firstly, sine wave signal generator is simple as the source, simulation FM modulation anddemodulation principle of analogue signals. Then, using the song as the source. Keywords: modulation and demodulation;FM; MATLAB; SIMULINK simulation

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的FSK调制解调1

基于MATLAB的FSK调制解调 学生姓名:段斐指导老师:吴志敏 摘要本课程设计利用MATLAB集成环境下的M文件,编写程序来实现FSK 的调制解调,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,并观察解调前后频谱有何变化以加深对F SK信号解调原理的理解。对信号叠加噪声,并迚行解调,绘制出解调前后信号的时频波形,改变噪声功率迚行解调,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。完成整个FSK的调制解调过程。程序开发平台为MATLAB7.1,使用其自带的M文件实现。运行平台为Windows 2000。 关键词:程序设计;FSK ;调制解调;MATLAB7.1;M文件 1引言 本课程设计是利用MATLAB集成环境下的M文件,编写程序来实现FSK 的调制解调,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。 1.1课程设计目的 此次课程设计的目的是熟悉MATLAB中M文件的使用方法,编写M文件实现FSK的调制和解调,绘制出FSK信号解调前后在时域和频域中的波形,观察调解前后频谱的变化,再对信号迚行噪声叠加后解调同样绘制解调前后的

信号时频波形,最后改变噪声功率迚行调解,分析噪声对信号传输造成的影响,加深对FSK信号解调原理的理解。 1.2课程设计要求 熟悉MATLAB中M文件的使用方法,并在掌握FSK调制解调原理的基础上,编写出F SK调制解调程序。在M文件环境下运行程序绘制出F SK信号解调前后在时域和频域中的波形,观察波形在解调前后的变化,对其作出解释,同时对信号加入噪声后解调,得到解调后的时频波形,分析噪声对信号传输造成的影响。解释所得到的结果。 1.3课程设计步骤 本课程设计采用M文件编写的方法实现二迚制的FSK的调制与解调,然后在信号中叠加高斯白噪声。一,调用dmode函数实现FSK的解调,并绘制出F SK信号调制前后在时域和频域中的波形,两者比较。二,调用ddemod函数解调,绘制出F SK信号解调前后在时域和频域中的波形,两者比较。三,调用awgn函数在新海中叠加不同信噪比的噪声,绘制在各种噪声下的时域频域图。最后分析结果。 1.4设计平台简介 Matlab是美国MathWorks公司开发的用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境。是目前最好的科学计算类软件。 作为和Mathematica、Maple并列的三大数学软件。其强项就是其强大的矩阵计算以及仿真能力。Matlab的由来就是Matrix + Laboratory = Matlab,这个软件在国内也被称作《矩阵实验室》。Matlab提供了自己的编译器:全面兼容C++以及Fortran两大语言。Matlab 7.1于2005.9最新发布-完整版,提供了

数学实验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的FSK调制解调 (1)

基于MATLAB的FSK的实验报告 姓 1.1

实现对FSK的MATLAB仿真. 重点研究问题: (1) 对FSK的概念、组成以及性能分析方法有深入的研究; (2) FSK调制与解调的原理及应用MATLAB软件实现仿真的方案. 1.2 FSK信号的调制方法 移频键控(FSK):用数字调制信号的正负控制载波的频率。当数字信号的振幅为正时载波频率为f1,当数字信号的振幅为负时载波频率为 f2。有时也把代表两个以上符号的多进制频率调制称为移频键控。移频键控能区分通路,但抗干扰能力不如移相键控和差分移相键控。他的主要调制方法有以下两种: 方法一: 用一个矩形脉冲序列对一个载波进行调频。 图2-3 2FSK信号的产生(一) 方法二:键控法 图2-4 2FSK信号的产生(二) 键控法是利用矩形脉冲()t b来控制开关电路对两个不同的独立频率源进行选通。

1.3 FSK解调的方法 常见的FSK解调方法有两种:相干解调法与非相干解调法.现在我将对这两种解法。 1.4 设计总思路 如下图所示,我将FSK的调制与FSK的解调独立开作为两个子函数,其中FSK调制的输出即可作为FSK解调的输入信号.最后设计一主函数main将两个子函数同时调用完成整个仿真过程。 图3-1 设计总思路图 2.1 FSK调制的仿真设计 本文主要是对2FSK进行调制,而2FSK可看做是基带信号与载波频率的结合就可.FSK的产生思路参考的是键控法,如图4

图3-2 2FSK信号的产生(二) 2.2 FSK解调的仿真设计 如上图所示的FSK信号的相干检测原理图,FSK信号可以采用两个乘法检测器进行相干检测. 上图中输入信号为2FSK信号加上噪声组成 带通滤波器2的设计类似滤波器1,只是更改频率为fc2就可.

基于MATLAB的ASK调制解调实现

基于MATLAB的ASK调制解调实现

————————————————————————————————作者:————————————————————————————————日期: ?

长沙理工大学 《通信原理》课程设计报告 学院专业 班级学号 学生姓名指导教师 课程成绩完成日期2016年1月8日

课程设计成绩评定 学院专业 班级学号 学生姓名指导教师 课程成绩完成日期2016年1月8日 指导教师对学生在课程设计中的评价 评分项目优良中及格不及格课程设计中的创造性成果 学生掌握课程内容的程度 课程设计完成情况 课程设计动手能力 文字表达 学习态度 规范要求 课程设计论文的质量 指导教师对课程设计的评定意见 综合成绩指导教师签字2016年1月8日

课程设计任务书 城南学院通信工程专业 课程名称通信原理课程设计时间2015/2016学年第一学期17~19 周 学生姓名指导老师 题目基于MATLAB的ASK调制解调实现 主要内容: 利用MATLAB集成环境下的M文件,编写程序来实现ASK的调制解调, 要求采样频率为360HZ,并绘制出解调前后的时域和频域波形及叠加噪声时解 调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信 号传输的影响。 要求: 1)熟悉MATLAB中M文件的使用方法,并在掌握ASK调制解调原理 的基础上,编写出ASK调制解调程序。 2)绘制出ASK信号解调前后在时域和频域中的波形,并观察解调前后频谱有何变化以加深对ASK信号解调原理的理解。 3)对信号叠加噪声,并进行解调,绘制出解调前后信号的时频波形,改变噪声功率进行解调,分析噪声对信号传输造成的影响。 4)在老师的指导下,要求独立完成课程设计的全部内容,并按要求编写课 程设计学年论文,能正确阐述和分析设计和实验结果。 应当提交的文件: (1)课程设计学年论文。 (2)课程设计附件。

AM调制解调及matlab仿真程序和图

(1)所用滤波器函数:巴特沃斯滤波器 % 注: wp(或Wp)为通带截止频率 ws(或Ws)为阻带截止频率 Rp为通带衰减 As为阻带衰减 %butterworth低通滤波器原型设计函数要求Ws>Wp>0 As>Rp>0 function [b,a]=afd_butt(Wp,Ws,Rp,As) N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(Wp/Ws))); %上条语句为求滤波器阶数 N为整数 %ceil 朝正无穷大方向取整 fprintf('\n Butterworth Filter Order=%2.0f\n',N) OmegaC=Wp/((10^(Rp/10)-1)^(1/(2*N))) %求对应于N的3db截止频率 [b,a]=u_buttap(N,OmegaC); (2)傅里叶变换函数 function [Xk]=dft(xn,N) n=[0:1:N-1]; k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^(nk); Xk=xn*WNnk; 设计部分: 1.普通AM调制与解调 %单音普通调幅波调制y=amod(x,t,fs,t0,fc,Vm0,ma)要求fs>2fc %x调制信号,t调制信号自变量,t0采样区间,fs采样频率, %fc载波频率,Vm0输出载波电压振幅,ma调幅度 t0=0.1;fs=12000; fc=1000;Vm0=2.5;ma=0.25; n=-t0/2:1/fs:t0/2; x=4*cos(150*pi*n); %调制信号 y2=Vm0*cos(2*pi*fc*n); %载波信号figure(1) subplot(2,1,1);plot(n,y2); axis([-0.01,0.01,-5,5]); title('载波信号'); N=length(x); Y2=fft(y2); subplot(2,1,2); plot(n,Y2); title('载波信号频谱'); %画出频谱波形y=Vm0*(1+ma*x/Vm0).*cos(2*pi*fc*n); figure(2) subplot(2,1,1);plot(n,x) title('调制信号'); subplot(2,1,2) plot(n,y) title('已调波信号'); X=fft(x);Y=fft(y);

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)(如图,中心点从红色点

完整word版,msk的调制解调MATLAB源代码

msk的调制解调MATLAB源代码 function out = delay(data,n,sample_number) %data:延迟的数据 %n:延迟码元个数 %sample_number:码元采样个数 out = zeros(1,length(data)); out(n*sample_number+1:length(data)) = data(1:length(data)-n*sample_number); function [data_diff] = difference(data) %差分编码 %************************************************************************* * %data 输入信号 %data_diff 差分编码后信号 %************************************************************************* *

%-------------------------------------------------------------------------- data_diff = zeros(1,length(data)); data_diff(1) = 1 * data(1); %1为差分编码的初始参考值 for i = 2:length(data) data_diff(i) = data_diff(i-1) * data(i); end %************************************************************************* * function [signal_out,I_out,Q_out] = mod_msk(data,data_len,sample_number,Rb) %MSK基带调制 %************************************************************************* * % data 调制信号 % data_len 码元个数 % sample_number 每个码元采样点数

利用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));

16QAM调制解调(MATLAB)

题目: 基于MATLAB 的16QAM 及32QAM 系统的仿真 原理: QAM 是一种矢量调制,将输入比特映射到一个复平面,形成复数调制信号,然后将I 信号和Q 信号(实部虚部)分量采用幅度调制,分 别对应调制在相互正交的两个载波(cos t ω,sin t ω)上。下图为MQAM 的调制原理图。 MQAM 的信号表达式: ()()( )cos sin 1,2,...,, 0C S C S i i T C i T C S i i s t a g t t a g t t i M t T a a ωω=-=≤≤与 上述表达式可以看出,QAM 为两个正交载波振幅相位调制的结合。波形矢量可以表示为: ()()()11221,2,...,, 0i i i S s t s f t s f t i M t T =+=≤≤

( )()( )()()()()()12110 220 cos ,0sin ,01,2,...,1,2,...,S S T C S T C S T i i T i i f t t t t T f t t t t T s s t f t dt i M s s t f t dt i M ωω=≤≤= ≤≤====?? MQAM 信号最佳接收: 实验仿真条件: 码元数量设定为10000个,基带信号频率1HZ ,抽样频率32HZ ,载波频率4HZ 。 实验结果分析:

对于QAM ,可以看成是由两个相互正交且独立的多电平ASK 信号叠加而成。因此,利用多电平误码率的分析方法,可得到M 进制QAM 的误码率为: ])(1l o g 3[)1 1(0 22n E L L e r f c L P b e -- = 式中,M L =,Eb 为每码元能量,n 0为噪声单边功率谱密度。 通过调整高斯白噪声信道的信噪比SNR (Eb/No ),可以得到如图所示的误码率图: -1-0.50 0.51 1.52 2.5 10 -3 10 -2 10 -1 10 QAM 信号误码率分析 信噪比 误码率

基于MATLAB的ASK调制解调实现

长沙理工大学 《通信原理》课程设计报告 学院专业 班级学号 学生姓名指导教师 课程成绩完成日期2016年1月8日

课程设计成绩评定 学院专业 班级学号 学生姓名指导教师 课程成绩完成日期2016年1月8日指导教师对学生在课程设计中的评价 指导教师对课程设计的评定意见

课程设计任务书 城南学院通信工程专业

基于MATLAB的ASK调制解调实现 学生姓名:指导老师: 摘要MATLAB是美国MathWorks公司生产的一个为科学和工程计算专门设计的交互式大型软件,本课程设计主要内容是利用MATLAB集成环境下的M文件,编写程序来实现ASK的调制解调,要求采样频率为360HZ,并绘制出解调前后的时域和频域波形及叠加噪声时解调前后的时频波形,根据运行结果和波形来分析该解调过程的正确性及信道对信号传输的影响。目的是熟悉MATLAB中M文件的使用方法,并在掌握ASK 调制解调原理的基础上,编写出2ASK调制解调程序,绘制出ASK信号解调前后在时域和频域中的波形,观察解调前后频谱有何变化以及对信号叠加噪声后的变化。最终得到随着输入信号噪声的增加增大,误码越严重的结论,加深对ASK信号解调原理的理解。 关键词ASK调制解调;时域谱;频域谱;高斯白噪声;信噪比 1 引言 通信原理是通信工程专业的一门重要的专业课,是通信工程专业后续专业课的基础,掌握通信原理课程的知识不仅可以打下一个坚实的专业基础,还能提高处理通信系统问题能力和素质。通过本课程设计的ASK振幅键控调制解调,可以进一步理解数字通信的基础理论,有助于加深对通信原理的理解。 1.1课程设计目的 通过设计基于MATLAB的ASK调制解调实现,让我深入理解和掌握二进制ASK 调制解调以及噪声对信号传输的影响[1]。 在通信原理理论知识的基础上加深对ASK调制解调设计原理及实现方法的理解。使我对通信信号波形及频谱有深刻的认识。不仅加强了对课本知识的了解,而且还涉及到了MATLAB编程语言和软件的使用,以及基本的操作常识[2]。 掌握调制解调函数的应用,增强了我动手实践的能力。

MATLAB 层次聚类

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') %给个图,将来对照聚类结果把 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~图1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> 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=linkage(Y,’method’)说明:用‘method’参数指定的算法计算系统聚类树。 Z = 3.0000 4.0000 0.2228 2.0000 5.0000 0.5401 1.0000 7.0000 1.0267 6.0000 9.0000 1.0581 8.0000 10.0000 1.3717 对于M个元素的X,前面说了Y是1行M*(M-1)/2的行向量,Z则是(M-1)*3的矩阵。 Z数组的前两列是索引下标列,最后一列是距离列。例如上例中表示在产生聚类树的计算过程中

用matlab做聚类分析

用matlab做聚类分析 转载一: MATLAB提供了两种方法进行聚类分析: 1、利用clusterdata 函数对数据样本进行一次聚类,这个方法简洁方便,其特点是使用范围较窄,不能由用户根据自身需要来设定参数,更改距离计算方法; 2、分步聚类:(1)用pdist函数计算变量之间的距离,找到数据集合中两辆变量之间的相似性和非相似性;(2)用linkage函数定义变量之间的连接;(3)用cophenetic函数评价聚类信息;(4)用cluster函数进行聚类。 下边详细介绍两种方法: 1、一次聚类 Clusterdata函数可以视为pdist、linkage与cluster的综合,一般比较简单。 【clusterdata函数: 调用格式:T=clusterdata(X,cutoff) 等价于Y=pdist(X,’euclid’); Z=linkage(Y,’single’); T=cluster(Z,cutoff) 】 2、分步聚类 (1)求出变量之间的相似性 用pdist函数计算出相似矩阵,有多种方法可以求距离,若此前数据还未无量纲化,则可用zscore函数对其标准化 【pdist函数:调用格式:Y=pdist(X,’metric’) 说明:X是M*N矩阵,为由M个样本组成,每个样本有N个字段的数据集 metirc取值为:’euclidean’:欧氏距离(默认)‘seuclidean’:标准化欧氏距离;‘mahalanobis’:马氏距离…】 pdist生成一个M*(M-1)/2个元素的行向量,分别表示M个样本两两间的距离。这样可以缩小保存空间,不过,对于读者来说却是不好操作,因此,若想简单直观的表示,可以用squareform函数将其转化为方阵,其中x(i,j)表示第i个样本与第j个样本之的距离,对角线均为0. (2)用linkage函数来产生聚类树 【linkage函数:调用格式:Z=linkage(Y,’method’) 说明:Y为pdist函数返回的M*(M-1)/2个元素的行向量, method可取值:‘single’:最短距离法(默认);’complete’:最长距离法; ‘average’:未加权平均距离法;’weighted’:加权平均法 ‘centroid’:质心距离法;‘median’:加权质心距离法; ‘ward’:内平方距离法(最小方差算法)】 返回的Z为一个(M-1)*3的矩阵,其中前两列为索引标识,表示哪两个序号的样本可以聚为同一类,第三列为这两个样本之间的距离。另外,除了M个样本以外,对于每次新产生的类,依次用M+1、M+2、…来标识。 为了表示Z矩阵,我们可以用更直观的聚类数来展示,方法为:dendrogram(Z), 产生的聚类数是一个n型树,最下边表示样本,然后一级一级往上聚类,最终成为最顶端的一类。纵轴高度代表距离列。 另外,还可以设置聚类数最下端的样本数,默认为30,可以根据修改dendrogram(Z,n)参数n来实现,1

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