当前位置:文档之家› 模式识别实验报告_2

模式识别实验报告_2

模式识别理论与方法课程作业实验报告实验名称:Generating Pattern Classes实验编号:Proj01-01规定提交日期:2012年3月16日实际提交日期:2012年3月13日摘要:在熟悉Matlab中相关产生随机数和随机向量的函数基础上,重点就多元(维)高斯分布情况进行了本次实验研究:以mvnrnd()函数为核心,由浅入深、由简到难地逐步实现了获得N 个d维c类模式集,并将任意指定的两个维数、按类分不同颜色进行二维投影绘图展示。

技术论述:1,用矩阵表征各均值、协方差2,多维正态分布函数:实验结果讨论:从实验的过程和结果来看,进一步熟悉了多维高斯分布函数的性质和使用,基本达到了预期目的。

实验结果:图形部分:图1集合中的任意指定两个维度投影散点图形图2集合中的任意指定两个维度投影散点图形,每类一种颜色数据部分:Fa=9.6483 5.5074 2.4839 5.72087.2769 4.88079.1065 4.1758 1.5420 6.1500 6.2567 4.138710.0206 3.5897 2.6956 6.1500 6.9009 4.024810.1862 5.2959 3.1518 5.22877.1401 3.197410.4976 4.9501 1.4253 5.58257.4102 4.947411.3841 4.5128 2.0714 5.90068.2228 4.48219.6409 5.43540.9810 6.2676 6.9863 4.25308.8512 5.2401 2.7416 6.5095 6.1853 4.87519.8849 5.8766 3.3881 5.7879 6.7070 6.613210.6845 4.8772 3.4440 6.0758 6.6633 3.53818.7478 3.3923 2.4628 6.1352 6.9258 3.39079.5866 6.5308 1.7059 6.6572 6.7514 4.1234 8.2999 3.72600.0852 5.5818 5.5049 4.3525 11.0747 5.0835 1.8681 6.84327.3915 3.704910.2744 4.8616 2.5967 6.45607.1287 3.334511.2732 5.5013 1.7882 6.28637.9292 3.6436 10.9456 4.6985 1.4616 6.56687.0788 5.2986 9.9085 4.6522 2.9579 6.2845 6.7591 3.8167 8.2832 5.3328 1.4134 6.3768 6.6294 4.0419 10.0071 6.6619 1.0918 6.60267.3421 3.72149.6463 3.8060 1.6344 6.1337 6.4823 5.337310.3031 4.3285 2.9541 5.9217 6.0828 3.924711.3827 5.0409 2.74197.05867.6376 4.2837 13.1684 6.2082 1.3748 6.7191 6.8902 3.2330 11.9846 5.91080.9457 6.06727.4720 4.8710 11.1886 4.15430.97477.15167.4619 4.2620 9.2787 5.5863 3.4771 5.5654 6.7469 4.52238.8263 5.6121 2.1450 6.19907.0848 6.27079.0934 4.5884 1.2013 6.2549 6.4784 3.935910.4153 3.7705 2.6803 6.9746 6.7440 5.5763 9.3666 6.5097 2.4297 5.9348 6.5719 4.4739 11.2190 5.5874 1.19057.0840 6.7573 5.61459.3633 5.1353 2.0878 6.28517.2318 4.062410.5450 4.5922 1.68197.6731 6.9293 6.01999.4180 4.5281 2.3995 6.5958 6.8904 3.583210.3244 5.3690 4.0924 6.2067 6.9591 5.2545 10.3441 4.1053 2.6564 6.14147.9662 5.0024 9.5471 5.7258 2.6954 6.30067.1263 4.23438.8897 4.6916 2.0968 6.3380 6.5367 4.83189.1943 6.0874 1.6253 5.95547.5757 5.810110.9947 5.3560 1.3802 6.30677.1168 4.596810.2433 3.67630.71177.27487.0664 5.24619.1907 6.4982 1.9370 6.0473 6.4948 5.033610.8058 4.14500.7211 5.70927.1892 3.80919.0818 4.2633 2.3737 4.9058 6.1640 3.89399.3663 4.8987 2.6602 6.29747.3877 4.840110.3941 4.2046 1.5459 6.29647.4326 3.74408.4875 5.3582 1.7972 6.3595 6.8557 4.13878.9796 3.8901 2.1128 6.0709 6.9327 4.51779.8270 5.7906 2.7458 6.41027.1228 3.8328 Fb=7.2706e-008Fc=8.1479 4.7469 3.0243 5.5812 1.51598.62868.2293 4.2598 2.3764 2.92890.71058.04768.2969 5.0960 2.9152 3.1257-0.17187.62478.5212 4.1134 2.7298 6.0409 1.08127.94178.7216 4.0723 3.5793 3.73440.34488.00307.7519 4.6370 3.4269 4.7549 2.26907.41221.4689 6.52629.59588.6153 1.8746 5.31290.7252 6.55508.8830 6.61990.7224 4.42388.72527.0140 4.64149.25420.6592 5.830010.02947.6141 3.34368.6829-0.1825 5.112611.21917.3080 4.96559.08120.1829 5.99059.55217.1176 3.14549.34660.6371 5.01469.69617.4892 2.98108.64100.2161 5.636110.80409.4255 3.8439 6.9168-0.0959 5.1600 9.84837.1682 2.95819.30720.3703 5.6787 9.60548.1801 3.762010.5036-0.3189 5.5020 9.5593 6.7341 3.84659.31970.0703 4.89489.04297.0763 3.79928.84910.6844 6.032310.11858.5778 3.669610.07350.3946 6.0441 9.46597.3425 3.53459.1105 1.5117 5.7459 9.80647.5425 3.110010.29140.8737 5.4085 11.13327.3167 3.26078.8462 1.1033 4.70938.89358.7706 4.54089.52560.1717 5.16649.1860 6.3056 2.216210.5140-0.4248 5.689610.10168.0046 2.98779.5155-0.1837 5.6127 10.08357.2444 3.798910.6898 1.0766 5.5360 9.92938.2313 3.87557.9165-0.5513 5.6216 11.3417 6.4291 3.37547.61070.5368 6.0762 2.466810.2729 2.3393 1.1392 3.2003 4.6689 -0.11189.2253 1.96660.3000 4.4845 5.0391 1.51468.37010.6157 1.0943 3.7617 4.3484 -0.502210.15810.4752 1.0992 4.2291 4.8148 3.506810.7347-0.67490.8837 3.7837 5.7105 3.08199.9620 3.1265 1.2664 4.1610 5.4902 2.76537.57330.68020.6764 4.3750 3.70771.808310.2191 1.11240.4150 4.0906 5.17192.236711.21250.67620.90493.2792 5.8028 1.15708.0017 1.62660.7252 3.83644.3532 9.61565.4535 3.20308.80037.22538.53077.49167.7935 3.88779.0452 6.05538.60868.3620 5.6559 3.66428.1250 6.44309.3105 6.5492 5.8504 3.16878.94467.16858.95497.0622 6.9555 3.90288.42637.39128.65678.1994 5.4819 3.45698.1752 5.95059.90508.4161 6.8079 3.31187.8120 6.44008.46148.0543 6.6962 3.20678.1270 6.83829.92789.9317 5.2581 3.20569.7804 6.741210.57267.2542 6.7284 3.31647.74407.89419.31857.1946 6.3492 4.18008.32707.752210.17228.7936 5.6577 2.98627.99907.524210.5277附录:(程序清单)%在Matlab版本2009a下运行通过close all;clc;clear;%公共数据N=50;%数据集中的样本个数d=6;%维数c=5;%类数m=10*rand(1,d);%均值向量mS=sprandsym(d,0.5,0.2,1);%协方差矩阵S随机产生(对称正定矩阵)%%aFa=GetNdRandn(N,d,m,S)%%bx=10*rand(1,d);Fb=GetValueRandn(x,m,S)%%cMc=10*rand(c,d);Sc=[];for k=1:c%随机产生每类的协方差矩阵St=sprandsym(d,0.5,0.2,1);St=full(St);%将稀疏矩阵转换成全矩阵Sc=cat(3,Sc,St);endwhile(1)%随机产生每类的个数PiN=randi(2*N/c,1,c-1);if sum(PiN)<Nbreak;endendPiN=cat(2,PiN,N-sum(PiN));Fc=GetNdCCRandn(PiN,Mc,Sc)%%dShowTwoInNdDataSet(randi(d),randi(d),Fa);%%eShowTwoInNdCCDataSet(randi(d),randi(d),PiN,Fc);function F=GetNdRandn(N,d,m,S)%生成N个d维随机向量集合的函数,并适当检查输入参数的有效性%输入参数:向量个数N,向量维数d,高斯分布的均值向量m%和协方差矩阵S为d*d的对称半正定矩阵F=[];[k,n]=size(m);if1~=min(k,n)||d~=max(k,n)fprintf('参数错误:均值向量维数不匹配\n');return;end[k,n]=size(S);if k~=n||k~=dfprintf('参数错误:协方差矩阵维数不匹配\n');return;endtryF=mvnrnd(m,S,N);catch MEfprintf('参数错误,原因如下:\n%s\n%s\n',ME.identifier,ME.message);F=[];Endfunction F=GetValueRandn(x,m,S)%计算d元高斯分布N(m,S)值的函数,并适当检查输入参数的有效性%输入参数:d维向量x,高斯分布的均值向量m%和协方差矩阵S为d*d的对称半正定矩阵F=[];[k,n]=size(x);d=max(k,n);if(min(k,n)>1)||(d<1)fprintf('参数x错误:x应当为一个行向量\n');return;end[k,n]=size(m);if1~=min(k,n)||d~=max(k,n)fprintf('参数m错误:均值向量m维数与x应当保持一致\n');return;end[k,n]=size(S);if k~=n||k~=dfprintf('参数错误:协方差矩阵维数不匹配,\n');return;endtryF=mvncdf(x,m,S);catch MEfprintf('参数错误,原因如下:\n%s\n%s\n',ME.identifier,ME.message);F=[];Endfunction DataSet=GetNdCCRandn(PiN,m,S)%生成N个d维向量的高斯类数据集,分成C类;如果输入参数错误,则输出空数据集%输入参数:每类的个数(先验概率)为PiN1*C,均值向量m C*d%和协方差矩阵S为d*d*C的对称半正定矩阵DataSet=[];[a,C]=size(PiN);if(a>1)||(C<1)fprintf('每类的个数(先验概率)PiN错误:应当为一个行向量\n');return;end[a,dim]=size(m);if a~=Cfprintf('参数m错误:均值向量m的行数与应当与Pi的列数保持一致\n');return;end[a,b,c]=size(S);if(a~=dim)||(b~=dim)||(c~=C)fprintf('参数错误:协方差矩阵S维数不匹配\n');return;endfor k=1:CTemp=GetNdRandn(PiN(k),dim,m(k,:),S(:,:,k));if isempty(Temp)DataSet=[];fprintf('参数错误:协方差矩阵S中数据存在问题(不是对称正定矩阵)\n');return;endDataSet=cat(1,DataSet,Temp);Endfunction ShowTwoInNdDataSet(x,y,S)%在N个d维向量构成的集合中,绘制该集合中的任意指定两个维度投影散点图形%输入参数:维度号x,维度号主,数据集S N*d[N,d]=size(S);if min(x,y)<1||max(x,y)>dfprintf('参数错误:输入的维数x、y超出范围啦\n');return;endfigure;plot(S(:,x),S(:,y),'.')%此处的分号不能有title('集合中的任意指定两个维度投影散点图形');function ShowTwoInNdCCDataSet(x,y,PiN,S)%在N个d维向量构成的集合中,绘制该集合中的任意指定两个维度投影散点图形%输入参数:维度号x,维度号主,每类的个数PiN,数据集S N*d[N,d]=size(S);if min(x,y)<1||max(x,y)>dfprintf('参数错误:输入的维数x、y超出范围啦\n');return;end[k,C]=size(PiN);if(k>1)||(C<1)fprintf('每类的个数(先验概率)PiN错误:应当为一个行向量\n');return;endif N~=sum(PiN)fprintf('参数错误:每类的个数PiN的总和与数据集S的行数不匹配\n');return;endM=max(PiN);%找出最多的一种类的数量Ps=ones(1,C);%算出每一类的起点位置for k=2:CPs(k)=Ps(k-1)+PiN(k-1);endX=zeros(M,C);Y=X;for J=1:Mfor k=1:Cif J<PiN(k)Ps(k)=Ps(k)+1;end%按顺序组装数据,以便每类对应于同一颜色X(J,k)=S(Ps(k),x);Y(J,k)=S(Ps(k),y);endendfigure;plot(X,Y,'x')%此处的分号不能有title('集合中的任意指定两个维度投影散点图形,每类一种颜色');。

相关主题