classify.m

来自「能够实现Fisher线性判别」· M 代码 · 共 55 行

M
55
字号
function [balpha,xalpha,yalpha] = classify(x1,x2,w,bw);

[n1,d1]=size(x1);
[n2,d2]=size(x2);
kw=w(2)/w(1);
cita=atan(kw);
if w(1)<0
    cita=pi+cita;
end

pjpoint1=[];
for i=1:n1
    r1=x1(i,1);
    c1=x1(i,2);
    p1=projectline([r1 c1],w,bw,'g');
    pjpoint1=[pjpoint1,p1];
end
pjpoint2=[];
for i=1:n2
    r2=x2(i,1);
    c2=x2(i,2);
    p2=projectline([r2 c2],w,bw,'r');
    pjpoint2=[pjpoint2,p2];
end
pjpoint=[pjpoint1,pjpoint2];

palpha=mean(pjpoint);
xalpha=palpha*cos(cita);
yalpha=xalpha*kw+bw;
balpha=palpha/sin(cita)+bw;


function p = projectline(point,w,bw,cl);

kw=w(2)/w(1);

x1=point(1);
y1=point(2);
x=(x1+kw*y1-kw*bw)/(1+kw^2);
y=kw*x+bw;

pjline=line([x1,x],[y1,y],'color',cl);
hold on;

p=sqrt(x^2+(y-bw)^2);
if w(1)>0
    if x<0
        p=-p;
    end
else
    if x>0
        p=-p;
    end
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?