求助--建模中MATLAB马氏距离计算--详细过程
有以下数据:6只Apf蠓虫的触长,翅膀数据
触长/mm1.141.181.21.261.281.3翅长/mm1.781.961.86221.969只Af蠓虫触长,翅膀数据触长/mm1.241.361.381.381.381.41.481.541.56翅长/mm1.721.741.641.821.91.71.821.822.08
编程序实现求:两类蠓虫到另一类蠓虫总体的马氏距离
Apf=;
Af=;
d11=sqrt()
得到结果: Apf类到Apf类马氏距离/mm1.66661.71620.80250.85360.88981.4535 Apf类到Af类马氏距离/mm3.40314.17343.14543.54343.31012.7175 Af类到Apf类马氏距离/mm4.04726.44898.66855.59194.32498.10838.11499.63936.5871Af类到Af类马氏距离/mm1.84420.57551.39650.5431.26340.93450.77831.55292.1296
我的问题是: 如: Apf类到Apf类马氏距离 是怎样计算出来的?
我知道有马氏距离计算公式: http://upload.wikimedia.org/math/c/1/c/c1c502518dea28eb5f141824af2844e9.png
那么具体的计算过程是怎样的呢?望知道这方面知识的高手能指点一下!
最好能举例,指点一下具体的操作过程。
感激不尽 补充:如按照D2 = MAHAL(Y,X)来的话,令X,Y分别等于一个具体的矩阵,然后算其 该类样本的均值与协方差矩阵,然后进行计算。可以按照步骤进行吗? 本帖最后由 追梦者 于 2009-8-10 11:30 编辑
恩,我好像见过这样的题目不过是用神经网络做的;
如上述题目:
p=[1.14 1.18 1.2 1.26 1.28 1.3 1.24 1.36 1.38 1.38 1.38 1.4 1.48
1.78 1.96 1.86 2 2 1.96 1.72 1.74 1.64 1.82 1.9 1.7 1.82 ];%两种昆虫的数值
%说的具体先,上面两种昆虫的数据你是这样写的
%Apf=;
%Af=;
%在神经网络中p=[1.14 1.18 1.2 1.26 1.28 1.3 1.24 1.36 1.38 1.38 1.38 1.4 1.48
%1.78 1.96 1.86 2 2 1.96 1.72 1.74 1.64 1.82 1.9 1.7 1.82 ]=注意要转制加上“ ' ”。因为神经网络中每次训练的向量是以p中每列向量作为训练向量的。
t=;%前六个的昆虫我们设为第1类。后面九个昆虫我们设为第2类就是;
t=ind2vec(t);%将上面的t转化为0-1变量,1表示1在第一个,2表示1在第二个;转化后的t即为
net=newlvq(minmax(p),11,);%创建函数,minmax(p)表示p中每行的最大最小值,11表示中间层的神经元个数。表示两类昆虫的占的比例。
net.trainparam.goal=0.001;%训练需要达到的目标的精度
net.trainparam.epochs=1000;%训练次数
net=train(net,p);%开始训练
假如我要判断u=[1.2 5.3 3.6;
1.45 5.6.3]三个昆虫
y=sim(net,u);
y=vec2ind(y);%将0-1变量转化为1,2。
%对了除此之外,假如说我有三类昆虫,我也可以设1,2,3;
不知解释的是否明了,O(∩_∩)O~有问题再向我发信息就行了,只要看到了一定回,不会的话,也会回的O(∩_∩)O~ 本帖最后由 追梦者 于 2009-8-9 18:58 编辑
恩,以前也做过马氏判别法,不过忘得差不多了,只有几个记得O(∩_∩)O~,不知能不能帮上忙
你写的求和符号,你应该知道他代表协方差矩阵。
%定义一个函数
function y=mashi(Apf,Af,x)
%Apf和Af的协方差矩阵
a=cov(Apf);
b=cov(Af);
%计算距离并判别,u是触长和翅膀的均值向量
u_Apf=
u_Af=;
d1^2=(x-u_Apf)'*inv(a)*(x-u_Apf);
d1^2=(x-u_Af)'*inv(b)*(x-u_Af);
if d1^2<d1^2
y=1;
else
y=0;
end
__________________________________________________________________________________
%"data.m"
Apf=;
Af=;
x=[1.2 5.3 3.6;
1.45 5.6.3]
__________________________________________________________________________________
%"main.m"
data;
y=mashi(Apf,Af,x);
————————————————————————————————————————————————————
得出结论。
在MATLAB中内置函数mahal大体意思就这样O(∩_∩)O~ 恩,忘了提醒一下,上面的冒号“:”我是用中文打的。运行时要改下O(∩_∩)O~ 对了,我上面做的是判别 新东西,得接触哈 3# 追梦者
谢谢您的帮忙!您能将您用神经网络做出来的程序 注释一下 吗? 谢谢了 好······································· 我就是要找这个呢{:soso_e102:}
页:
[1]
2