模式分类的matlab编程,程序提示函数的定义有问题 小弟刚学Matlab不久,请各位高手帮忙改一下

2025-02-26 15:41:56
推荐回答(1个)
回答1:

function g= f(x, m, C, p)
g = -((x-m)*( x-m)')/(2*C*C)+log(p);%%输出应为g
end %%保存到当前目录
%%%%%%%%%%%%%%%%%%%%%%%%%%
p1=0.5;
p2 = 1-p1;
w1 = [-5.01 -8.12 -3.68;...
-5.43 -3.48 -3.54;...
1.08 -5.52 1.66;...
0.86 -3.78 -4.11;...
-2.67 0.63 7.39;...
4.94 3.29 2.08;...
-2.51 2.09 -2.59;...
-2.25 -2.13 -6.94;...
5.56 2.86 -2.26;...
1.03 -3.33 4.33];

w2 = [-0.91 -0.18 -0.05;...
1.30 -2.06 -3.53;...
-7.75 -4.54 -0.95;...
-5.47 0.50 3.92;...
6.14 5.72 -4.85;...
3.60 1.26 4.36;...
5.37 -4.63 -3.65;...
7.18 1.46 -6.66;...
-7.39 1.17 6.30;...
-7.50 -6.32 -0.31];

w3 = [5.35 2.26 8.13;...
5.12 3.22 -2.66;...
-1.34 -5.31 -9.87;...
4.48 3.42 5.19;...
7.11 2.39 9.21;...
7.17 4.33 -0.98;...
5.75 3.97 6.65;...
0.77 0.27 2.41;...
0.90 -0.43 -8.71;...
3.52 -0.36 6.43];

m1 = mean2(w1); C1 = std2(w1);
m2 = mean2(w2); C2 = std2(w2);
m3 = mean2(w3); C3 = std2(w3);%%计算均值和方差,mean是按列求均值,如果矩阵是多维矩阵,得到的是按列求平均后的值。mean2是求矩阵的平均值

% !!To students!!
% 10 samples are too small. Generate more samples using m1, m2, m3, C1, C2 and C3.
% and make the sum of all samples be 1000.

plot3(w1(:,1),w1(:,2),w1(:,3),'.');hold on;
plot3(w2(:,1),w2(:,2),w2(:,3),'.r');
plot3(w3(:,1),w3(:,2),w3(:,3),'.g');
grid on;
legend('w1','w2','w3');

g1= f(w1(1:10),m1,C1,p1);
g2= f(w2(1:10),m2,C2,1-p1);%%对应序号调整
if (g1>g2)
fprintf('test sample is classified to class w1\n');
else
fprintf('test sample is classified to class w2\n');
end
%%%%%%%%%%%%%%%%%