现在用MATLAB软件编写程序来实现LMSE算法计算判别函数
现在用MATLAB软件编写程序来实现LMSE算法计算判别函数。
¨?function?y=lmseclassify(sample)?????load?templet?pattern;?
w=zeros(26,10);???
??flag=1;???
??num=0;????
?num1=0;????
?d=[?];?????
m=[?];????
?r=[?];????
?while?flag?????????flag=0;??????
???num1=num1+1;??????
???for??j=1:40?
????????????for??i=1:10?
????????????????num=num+1;?
????????????????r=[0?0?0?0?0?0?0?0?0?0];?????????
????????r(i)=1;?
????????????????pattern(i).feature(26,j)=1;??????????
???????for?k=1:10?
????????????????????m=pattern(i).feature(:,j);??????????????
???????d(k)=w(:,k)'*m;??????????
???????end?
????????????????for?k=1:10?????????????????????if?k~=i?
????????????????????????if?d(i)<=d(k)?????????????????????????????flag=1;??????????????????
???????end???????????
??????????end???????????
??????end?
????????????????for?k=1:10?
????????????????????w(:,k)=w(:,k)+m*(r(k)-d(k))/num;?????????
????????end???????
??????end?????
????end?
????????if?num1>200?????????????flag=0;????????
?end?????
end?
sample(26)=1;??
???b=[];?
????for?k=1:10?
????????h(k)=w(:,k)'*sample';??
???end?
?
?
[maxval,maxpos]=max(h);?
y=maxpos-1;
最小二乘法的算法设计
main (){int n,i,flag2;char flag1='y';float ar[50],br[50],x,y,xe,ye,xye,xxe,sx,sy,sxy,sxx,a,b;printf ("\n欢迎使用最小二乘法数据处理程序\n");printf ("\n说明:本程序运行结果保留小数点后三位\n");for (;flag1=='y'||flag1=='Y';){printf ("\n请输入您要处理的数据的组数:");printf ("\n*****提示:本程序定义一对x,y值为一组数据:");scanf ("%d",&n);if (n>50) {printf ("\n对不起,本程序暂时无法处理50组以上的数据");continue;}printf ("\n请选择您的数据的处理方式:");printf ("\n\t1.y与x为一次线性关系");printf ("\n\t2.y与x的2次为线性关系\n");scanf ("%d",&flag2);if (flag2>2||flag2<1) {printf ("\n对不起,您的输入不正确\n");continue;}for (i=0;i