聊城联通公司员工工作总结里面正式的员工是签合同还是怎

小木虫 --- 600万学术达人喜爱的学术科研平台
&&查看话题
在matlab里面一个方阵,每隔n行取m行组成一个新的矩阵,应该怎么做
在matlab里面一个方阵,每隔n行取m行组成一个新的矩阵,应该怎么做,其中矩阵的总行数可以整除m+n
具体怎么写呢
最后循环中应该是B(j,:),发帖时没注意,在此更正
北京学而思教育科技有限公司 地址:北京市海淀区北三环甲18号中鼎大厦A座1层102室 电话:010-您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
一讲MATLAB的使用.doc 28页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:200 &&
一讲MATLAB的使用
你可能关注的文档:
··········
··········
第一讲MATLAB的使用MATLAB作为线性系统的一种分析和仿真工具,是理工科大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决工程、科学计算和数学学科中许多问题。MATLAB建立在向量、数组和矩阵的基础上,使用方便,人机界面直观,输出结果可视化。其中,矩阵是MATLAB的核心!下面将从基本规则和操作,编程和作图以及文件的操作等等多个方面,来讲解数学建模中MATLAB的一些常用方法。变量与函数变量、函数与编程所形成的m文件是MATLAB操作的基本,在介绍它们的具体使用方法之前,先给出一些必须了解的基本规则。变量MATLAB和其他编程工具一样,变量是必须的基本元素,它也是以字母开头,后接字母、数字或下划线的字符序列,用法也基本一样。其具体的命名规则是:(1)变量名必须是不含空格的单个词;(2)变量名区分大小写;(3)变量名最多不超过19个字符;(4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号。特殊变量表注意,自定义的变量不能和表中变量名相同。2、数学运算符号及标点符号(1)MATLAB的每条命令后,若为逗号或无标点符号,则显示命令的结果;若命令后为分号,则禁止显示结果;(2)“%”后面所有文字为注释;(3)“...”表示续行。3、数学函数基本上,常用的数学函数在MATLAB中都有相应的命令,部分如下:4、M文件MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件.函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为:function因变量名=函数名(自变量名)函数值的获得必须通过具体的运算实现,并赋给因变量。M文件建立方法:1.在Matlab中,点:File-&New-&M-file2.在编辑窗口中输入程序内容3.点:File-&Save,存盘,M文件名必须与函数名一致。Matlab的应用程序也以M文件保存。例:定义函数f(x1,x2)=100(x2-x1)+(1-x1)1.建立M文件:fun.mfunctionf=fun(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^22.可以直接使用函数fun.m例如:计算f(1,2),只需在Matlab命令窗口键入命令:x=[12]fun(x)二、数组与矩阵矩阵是MATLAB最基本的数据对象,MATLAB的大部分运算或命令都是在矩阵运算的意义下执行的。在MATLAB中,不需对矩阵的维数和类型进行说明,MATLAB会根据用户所输入的内容自动进行配置。1、数组数组可以看作是只有一行或一列的简单矩阵,但作为常用的计算单元,matlab也专门为其设计了一系列命令。(1)创建简单的数组x=[abcdef]创建包含指定元素的行向量x=first:last创建从first开始,加1计数,到last结束的行向量x=first:increment:last创建从first开始,加increment计数,last结束的行向量x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量x=logspace(first,last,n)创建从开始,到结束,有n个元素的对数分隔行向量。(2)数组元素的访问(i)访问一个元素:x(i)表示访问数组x的第i个元素;(ii)访问一块元素:x(a:b:c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1;(iii)直接使用元素编址序号:x([abcd])表示提取数组x的第a、b、c、d个元素构成一个新的数组[x(a)x(b)x(c)x(d)]。(3)数组的方向前面例子中的数组都是一行数列,是行方向分布的,称之为行向量。数组也可以是列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示。产生列向量有两种方法:直接产生例c=[1;2;3;4]转置产生例b=[1234];c=b’说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素。(4)数组的运算(i)标量-数组运算数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算。设:a=[a1,a2,…,an],c=标量则:a+c=[a1+c,a2+c,…,an+c]a.*c=[a1*c,a2*c,…,an*c]a./c=[a1/c,a2/c,…,an/c](右除)a.\c=[c/a1,c/a2,…,c/an](左除)a.^c=[a1^c,a2^c,…,an^c]c.^a=[c^a1,c^a2,…,c^an](ii)数组-数组运算当两个数组有相同维数时,加、减、乘、除
正在加载中,请稍后...4696人阅读
Matlab开发(17)
机器学习(81)
【Matlab开发】matlab中bar绘图设置与各种距离度量
标签(空格分隔): 【Matlab开发】 【机器学习】
声明:引用请注明出处
Matlab Bar图如何为每个bar设置不同颜色
data = [3, 7, 5, 2;4, 3, 2, 9;6, 6, 1, 4];
b = bar(data);
使用bar绘制非常直观简单,但有时需要突出显示某一个bar,比如该bar是一个标杆,用来衡量其bar的高度,所以可以用醒目的红色来显示它。那么如何设置呢?
参看下面的代码:
data = [3, 7, 5, 2;4, 3, 2, 9;6, 6, 1, 4];
b = bar(data);
ch = get(b,'children');
set(ch{1},'FaceVertexCData',[1;1;1;1;2;2;2;2;3;3;3;3;4;4;4;4])
set(ch{2},'FaceVertexCData',[1;1;1;1;2;2;2;2;3;3;3;3;4;4;4;4])
set(ch{3},'FaceVertexCData',[1;1;1;1;2;2;2;2;3;3;3;3;4;4;4;4])
set(ch{4},'FaceVertexCData',[1;1;1;1;2;2;2;2;3;3;3;3;4;4;4;4])
data = [3, 7, 5, 2];
b = bar(data);
ch = get(b,'children');
set(ch,'FaceVertexCData',[0 0 1;0 1 1;1 1 1;1 0 1;])
matlab中用于求取各种距离的函数pdist方法的使用
在机器学习和数据挖掘中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。最常见的是数据分析中的相关分析,数据挖掘中的分类和聚 类算法,如 K 最近邻(KNN)和 K 均值(K-Means)等等。根据数据特性的不同,可以采用不同的度量方法。一般而言,定义一个距离函数 d(x,y), 需要满足下面几个准则:
(1) d(x,x) = 0
// 到自己的距离为0
(2) d(x,y) &= 0
// 距离非负
(3) d(x,y) = d(y,x)
// 对称性: 如果 A 到 B 距离是a,那么 B 到 A 的距离也应该是 a
(4) d(x,k)+ d(k,y) &= d(x,y)
// 三角形法则:(两边之和大于第三边)
本节首先介绍一下matlab中用于求取各种距离的函数pdist方法的使用
matlab中用于求取各种距离的函数pdist方法的使用
下面是help出来的帮助信息:
help pdist
pdist Pairwise distance between observations.
D = pdist(X) returns a vector D containing the Euclidean distances
between each pair of observations in the M-by-N data matrix X. Rows of
X correspond to observations, columns correspond to variables. D is a
1-by-(M*(M-1)/2) row vector, corresponding to the M*(M-1)/2 pairs of
observations in X.
D = pdist(X, DISTANCE) computes D using DISTANCE.
Choices are:
'euclidean'
- Euclidean distance (default)
'seuclidean'
- Standardized Euclidean distance. Each coordinate
difference between rows in X is scaled by dividing
by the corresponding element of the standard
deviation S=NANSTD(X). To specify another value for
S, use D=pdist(X,'seuclidean',S).
'cityblock'
- City Block distance
'minkowski'
- Minkowski distance. The default exponent is 2. To
specify a different exponent, use
D = pdist(X,'minkowski',P), where the exponent P is
a scalar positive value.
'chebychev'
- Chebychev distance (maximum coordinate difference)
'mahalanobis' - Mahalanobis distance, using the sample covariance
of X as computed by NANCOV. To compute the distance
with a different covariance, use
pdist(X,'mahalanobis',C), where the matrix C
is symmetric and positive definite.
- One minus the cosine of the included angle
between observations (treated as vectors)
'correlation' - One minus the sample linear correlation between
observations (treated as sequences of values).
'spearman'
- One minus the sample Spearman's rank correlation
between observations (treated as sequences of values).
- Hamming distance, percentage of coordinates
that differ
- One minus the Jaccard coefficient, the
percentage of nonzero coordinates that differ
- A distance function specified using @, for
example @DISTFUN.
A distance function must be of the form
function D2 = DISTFUN(XI, XJ),
taking as arguments a 1-by-N vector XI containing a single row of X, an
M2-by-N matrix XJ containing multiple rows of X, and returning an
M2-by-1 vector of distances D2, whose Jth element is the distance
between the observations XI and XJ(J,:).
The output D is arranged in the order of ((2,1),(3,1),..., (M,1),
(3,2),...(M,2),.....(M,M-1)), i.e. the lower left triangle of the full
M-by-M distance matrix in column order.
To get the distance between
the Ith and Jth observations (I & J), either use the formula
D((I-1)*(M-I/2)+J-I), or use the helper function Z = SQUAREFORM(D),
which returns an M-by-M square symmetric matrix, with the (I,J) entry
equal to distance between observation I and observation J.
% Compute the ordinary Euclidean distance
X = randn(100, 5);
% some random points
D = pdist(X, 'euclidean');
% euclidean distance
% Compute the Euclidean distance with each coordinate difference
% scaled by the standard deviation
Dstd = pdist(X,'seuclidean');
% Use a function handle to compute a distance that weights each
% coordinate contribution differently
Wgts = [.1 .3 .3 .2 .1];
% coordinate weights
weuc = @(XI,XJ,W)(sqrt(bsxfun(@minus,XI,XJ).^2 * W'));
Dwgt = pdist(X, @(Xi,Xj) weuc(Xi,Xj,Wgts));
‘euclidean’,’seuclidean’,’cityblock’,’minkowski’,’chebychev’,’mahalanobis’,’mahalanobis’,’cosine’,’correlation’,’spearman’,’hamming’,’jaccard’分别对应着默认的欧式距离L2,标准欧式距离,城市距离(曼哈顿距离),闵可夫斯基距离,切比雪夫距离,马氏距离,夹角余弦,皮尔逊相关距离,斯皮尔曼等级相关距离(1-斯皮尔曼等级相关系数),汉明距离,杰卡德相似距离(1-Jaccard similarity coefficient)。还可以使用自定义的距离函数:Function,function D2 = DISTFUN(XI, XJ)。在有需要的时候再进行说明:
这里先对上面所讲到的那些距离进行简单的说明和总结,在下小节还会继续加强说明:
欧式距离L2
简单的说就是向量的L2范数,不必细讲,从小学似乎都知道了吧!
例子:计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离:
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X,'euclidean')
标准欧式距离
标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:由于数据各维分量的分布不一样,先将各个分量都“标准化”到均值为0、方差为1。经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式:
标准化后的值 =
( 标准化前的值
- 分量的均值 ) /分量的标准差
dab=∑k=1n(x1k-x2kσk)2-------------√
注意这里的标准化,标准化的是分量之间,比如a,b的第一个分量x11,x21间的标准化。
例子:计算向量(0,0)、(1,0)、(0,2)两两间的标准化欧氏距离 (假设两个分量的标准差分别为0.5和1)
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'seuclidean',[0.5,1])
城市距离(曼哈顿距离)
城市街区距离(City Block distance),实际上对应的是向量间的L1距离。
dab=∑k=1n|x1k-x2k|
例子:计算向量(0,0)、(1,0)、(0,2)两两间的曼哈顿距离
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'cityblock')
闵可夫斯基距离
闵氏距离不是一种距离,而是一组距离的定义。
其中p是一个变参数。
当p=1时,就是曼哈顿距离
当p=2时,就是欧氏距离
当p→∞时,就是切比雪夫距离
根据变参数的不同,闵氏距离可以表示一类的距离。
这实际上就是通常意义上的向量范数的定义。
闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点。
举个例子:二维样本(身高,体重),其中身高范围是150~190,体重范围是50~60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。
简单说来,闵氏距离的缺点主要有两个:(1)将各个分量的量纲(scale),也就是“单位”,当作相同的看待了。(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。
例子:计算向量(0,0)、(1,0)、(0,2)两两间的闵氏距离(以变参数为2的欧氏距离为例)
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X,'minkowski',2)
切比雪夫距离
国际象棋玩过么?国王走一步能够移动到相邻的8个方格中的任意一个。那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走试试。你会发现最少步数总是max( | x2-x1 | , | y2-y1 | ) 步 。有一种类似的一种距离度量方法叫切比雪夫距离。
两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)的切比雪夫距离:
实际上等效于:
例子:计算向量(0,0)、(1,0)、(0,2)两两间的切比雪夫距离
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X, 'chebychev')
有M个样本向量X1,...,Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:
而其中向量Xi与Xj之间的马氏距离定义为:
若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:
也就是欧氏距离了。
若协方差矩阵是对角矩阵,公式变成了标准化欧氏距离。
马氏距离的优点:量纲无关,排除变量之间的相关性的干扰。
例子:Matlab计算(1 2),( 1 3),( 2 2),( 3 1)两两之间的马氏距离
X = [1 2; 1 3; 2 2; 3 1]
Y = pdist(X,'mahalanobis')
在使用中需要注意X构成的样本需要样本个数多于维度,即X的行需要大于列才能使用。
几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
例子:计算(1,0)、( 1,1.732)、( -1,0)两两间的夹角余弦
X = [1 0 ; 1 1.732 ; -1 0]
D = 1- pdist(X, 'cosine')
% Matlab中的pdist(X, 'cosine')得到的是1减夹角余弦的值
皮尔逊相关距离
相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。
而相关距离的定义是1减去相关系数。
当两个变量的标准差都不为零时,相关系数才有定义,皮尔逊相关系数适用于:
(1)、两个变量之间是线性关系,都是连续数据。
(2)、两个变量的总体是正态分布,或接近正态的单峰分布。
(3)、两个变量的观测值是成对的,每对观测值之间相互独立。
Matlab计算(1, 2 ,3 ,4 )与( 3 ,8 ,7 ,6 )之间的相关系数与相关距离
X = [1 2 3 4 ; 3 8 7 6]
C = corrcoef( X' )
%将返回相关系数矩阵
D = pdist( X , 'correlation')
如果单纯计算两个向量之间的皮尔逊相关系数,可以直接使用corr(a,b),a,b分别组织为列向量。
斯皮尔曼等级相关距离(1-斯皮尔曼等级相关系数)
在统计学中,斯皮尔曼等级相关系数以Charles Spearman命名,并经常用希腊字母ρ(rho)表示其值。斯皮尔曼等级相关系数用来估计两个变量X、Y之间的相关性,其中变量间的相关性可以使用单调函数来描述。如果两个变量取值的两个集合中均不存在相同的两个元素,那么,当其中一个变量可以表示为另一个变量的很好的单调函数时(即两个变量的变化趋势相同),两个变量之间的ρ可以达到+1或-1。
假设两个随机变量分别为X、Y(也可以看做两个集合),它们的元素个数均为N,两个随即变量取的第i(1&=i&=N)个值分别用Xi、Yi表示。对X、Y进行排序(同时为升序或降序),得到两个元素排行集合x、y,其中元素xi、yi分别为Xi在X中的排行以及Yi在Y中的排行。将集合x、y中的元素对应相减得到一个排行差分集合d,其中di=xi-yi,1&=i&=N。随机变量X、Y之间的斯皮尔曼等级相关系数可以由x、y或者d计算得到,其计算方式如下所示:
由排行集合x、y计算而得(斯皮尔曼等级相关系数同时也被认为是经过排行的两个随即变量的皮尔逊相关系数,以下实际是计算x、y的皮尔逊相关系数)(公式二):
斯皮尔曼等级相关系数对数据条件的要求没有皮尔逊相关系数严格,只要两个变量的观测值是成对的等级评定资料,或者是由连续变量观测资料转化得到的等级资料,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。
使用Matlab中已有的函数计算斯皮尔曼等级相关系数(使用上面的公式二):
coeff = corr(X , Y , 'type' , 'Spearman');
注意:使用Matlab自带函数计算斯皮尔曼等级相关系数时,需要保证X、Y均为列向量;Matlab自带的函数是通过公式二计算序列的斯皮尔曼等级相关系数的。
汉明距离的定义:两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。
应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。
Matlab中2个向量之间的汉明距离的定义为2个向量不同的分量所占的百分比。
例子:计算向量(0,0)、(1,0)、(0,2)两两间的汉明距离
X = [0 0 ; 1 0 ; 0 2];
D = PDIST(X, 'hamming')
D = 0.5000
杰卡德相似距离(1-Jaccard similarity coefficient)
两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。
杰卡德相似系数是衡量两个集合的相似度一种指标。
与杰卡德相似系数相反的概念是杰卡德距离(Jaccard distance)。杰卡德距离可用如下公式表示:
可将杰卡德相似系数用在衡量样本的相似度上。
样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。
p :样本A与B都是1的维度的个数
q :样本A是1,样本B是0的维度的个数
r :样本A是0,样本B是1的维度的个数
s :样本A与B都是0的维度的个数
那么样本A与B的杰卡德相似系数可以表示为:
这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。
而样本A与B的杰卡德距离表示为:
Matlab的pdist函数定义的杰卡德距离跟这里的定义有一些差别,Matlab中将其定义为不同的维度的个数占“非零维度个数”的比例,意思就是比如下面的(1,1,0)、(1,-1,0),不同的维度的个数有1个,只有第二个维度不同,两个集合中的非零元素个数为2个,1和-1嘛,所以,对应的杰卡德相似系数为0.5。
例子:计算(1,1,0)、(1,-1,0)、(-1,1,0)两两之间的杰卡德距离
X = [1 1 0; 1 -1 0; -1 1 0]
D = pdist( X , 'jaccard')
调试记录 张朋艺
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:951922次
积分:13306
积分:13306
排名:第897名
原创:266篇
转载:812篇
评论:132条
文章:18篇
阅读:24832
文章:50篇
阅读:112901
文章:24篇
阅读:71605
文章:47篇
阅读:84616}

我要回帖

更多关于 新员工入职多久签合同 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信