Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2011-04-07
帖子: 1
声望力: 0 ![]() |
![]()
刚接触matlab,对于其中的一些基本情况有点不太了解,想请教一下一个下面的问题,加红色的字 那里,请教一下定义的问题,那里定义的的是符号,最后显示的也只是一个符号,如果我随后输出的是一个G(x)=g1(x)-g2(x)是两个式子的之差,那该如何定义为好,而这个X=【x1;x2】向量我是要在两一个参数M文件中输入的,清各位朋友指导一下,谢谢。 中间的一些都是算法,不需要看
function bayes_classifier(feature1,feature2,p1,p2); %----------------------------------------------------- % bayes_classifier(class1,class2,p1,p2); 两类,两特征 % % INPUT variables: % - feature1 - feature vector of the size (m,2) ,m是第一类的样本数 % - feature2 - feature vector of the size (n,2) ,n是第二类的样本数 % - p1 - 先验概率1 % - p2 - 先验概率2 % 判别式 % g1(x) = A1*x1^2 + B1*x1*x2 + C1*x2^2 + D1*x1 + E1*x2 + F1 % g2(x) = A2*x1^2 + B2*x1*x2 + C2*x2^2 + D2*x1 + E2*x2 + F2 syms x1 syms x2 cov1=cov(feature1); cov2=cov(feature2); mu1=mean(feature1); mu2=mean(feature2); detcov1=det(cov1); detcov2=det(cov2); invcov1=inv(cov1); invcov2=inv(cov2); W1=-0.5*invcov1; w1=invcov1*mu1'; W2=-0.5*invcov2; w2=invcov2*mu2'; omega1=-0.5*(mu1)*invcov1*mu1'-0.5*log(detcov1)+log(p1); omega2=-0.5*(mu2)*invcov2*mu2'-0.5*log(detcov2)+log(p2); omega=omega1-omega2; X=[sym(x1); sym(x2)]; 这里定义的是符号 X_t=[sym(x1) sym(x2)]; digits(2); a=X_t*(sym(W1,'d')*X); a=simplify(a); b=(sym(w1','d')*X); %注意这个w1有一个转置。 c=X_t*(sym(W2,'d')*X); c=simplify(c); d=sym(w2','d')*X; eq1=a+b+sym(omega1,'d'); %eq1 就是g1(x) eq2=c+d+sym(omega2,'d'); %eq2 就是g2(x) disp(['Discriminant function for the first class:']); disp(eq1); disp(['Discriminant function for the second class:']); disp(eq2); |
![]() |
![]() |