⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 greedyappx.html

📁 很好的matlab模式识别工具箱
💻 HTML
📖 第 1 页 / 共 2 页
字号:
&nbsp;&nbsp;[dummy,new_inx]=max(tmp);<br>&nbsp;<br>&nbsp;&nbsp;<span class=comment>%&nbsp;orthonormalization</span><br>&nbsp;&nbsp;sel_inx&nbsp;=&nbsp;[sel_inx&nbsp;new_inx];<br>&nbsp;&nbsp;tmp&nbsp;=&nbsp;kernel(&nbsp;X(:,new_inx),&nbsp;X(:,work_inx),&nbsp;ker,&nbsp;arg&nbsp;);<br>&nbsp;&nbsp;kercnt=kercnt+num_data-i;<br><br>&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;i&nbsp;&gt;&nbsp;1,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z(i,work_inx)&nbsp;=&nbsp;...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(tmp&nbsp;-&nbsp;Z(1:i-1,new_inx)'*Z(1:i-1,work_inx))/sqrt(Errors(new_inx));<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha(i,:)&nbsp;=&nbsp;-&nbsp;Z(1:i-1,new_inx)'*Alpha(1:i-1,:);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha(i,i)&nbsp;=&nbsp;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha(i,:)&nbsp;=&nbsp;Alpha(i,:)/sqrt(Errors(new_inx));<br>&nbsp;&nbsp;<span class=keyword>else</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z(1,:)&nbsp;=&nbsp;tmp/sqrt(Errors(new_inx));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha(1,1)&nbsp;=&nbsp;1/sqrt(Errors(new_inx));<br>&nbsp;&nbsp;<span class=keyword>end</span><br><br>&nbsp;&nbsp;<span class=comment>%&nbsp;Error(i)&nbsp;=&nbsp;k(i,i)-k'(i,i)</span><br>&nbsp;&nbsp;Errors(work_inx)&nbsp;=&nbsp;Errors(work_inx)&nbsp;-&nbsp;Z(i,work_inx).^2;<br>&nbsp;&nbsp;Errors(find(Errors&lt;0))&nbsp;=&nbsp;0;<br>&nbsp;&nbsp;work_inx(find(work_inx==new_inx))&nbsp;=&nbsp;[];<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<span class=comment>%&nbsp;store&nbsp;errors</span><br>&nbsp;&nbsp;MsErr&nbsp;=&nbsp;[MsErr,&nbsp;sum(Errors)/num_data];<br>&nbsp;&nbsp;MaxErr&nbsp;=&nbsp;[MaxErr,&nbsp;max(Errors)];<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;verb,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class=io>fprintf</span>(<span class=quotes>'%d:&nbsp;maxerr=%f,&nbsp;mserr=%f,&nbsp;inx=%d\n'</span>,&nbsp;...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i,MaxErr(<span class=keyword>end</span>),&nbsp;MsErr(<span class=keyword>end</span>),&nbsp;new_inx);<br>&nbsp;&nbsp;<span class=keyword>end</span><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<span class=comment>%&nbsp;evaluate&nbsp;stopping&nbsp;conditions:</span><br>&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;maxerr&nbsp;&gt;=&nbsp;MaxErr(<span class=keyword>end</span>)&nbsp;|&nbsp;mserr&nbsp;&gt;=&nbsp;MsErr(<span class=keyword>end</span>),<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class=jump>break</span>;<br>&nbsp;&nbsp;<span class=keyword>end</span><br><span class=keyword>end</span><br><br><br><span class=comment>%&nbsp;cut&nbsp;off&nbsp;non-used&nbsp;memory&nbsp;if&nbsp;number&nbsp;of&nbsp;used&nbsp;base&nbsp;vector&nbsp;is&nbsp;less&nbsp;than&nbsp;m</span><br>Alpha=Alpha(1:i,1:i);<br>Z&nbsp;=&nbsp;Z(1:i,:);<br><span class=jump>return</span>;<br><br><span class=comment>%=================================================</span><br><span class=defun_kw>function</span>&nbsp;<span class=defun_out>[sel_inx,Alpha,Z,kercnt,MsErr,MaxErr]</span>=...<br>&nbsp;&nbsp;upperbound_greedyappx(X,ker,arg,m,mserr,maxerr,verb,init_model)&nbsp;<br><br>[dim,num_data]=size(X);<br><br>kercnt=0;<br>sel_inx=[];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=comment>%&nbsp;indices&nbsp;of&nbsp;seleted&nbsp;base&nbsp;vectors</span><br>work_inx&nbsp;=&nbsp;[1:num_data];&nbsp;<span class=comment>%&nbsp;indices&nbsp;of&nbsp;the&nbsp;rest&nbsp;</span><br>MsErr&nbsp;=&nbsp;[];<br>MaxErr&nbsp;=&nbsp;[];<br><br><span class=keyword>if</span>&nbsp;<span class=stack>nargin</span>&nbsp;&lt;&nbsp;8,<br>&nbsp;&nbsp;Errors&nbsp;=&nbsp;diagker(X,ker,arg)';<br>&nbsp;&nbsp;Z&nbsp;=&nbsp;zeros(m,num_data);<br>&nbsp;&nbsp;Alpha=zeros(m,m);<br>&nbsp;&nbsp;curr_m&nbsp;=&nbsp;0;<br><span class=keyword>else</span><br>&nbsp;&nbsp;Errors&nbsp;=&nbsp;init_model.Errors;<br>&nbsp;&nbsp;curr_m&nbsp;=&nbsp;size(init_model.Z,1);<br>&nbsp;&nbsp;m&nbsp;=&nbsp;m&nbsp;+&nbsp;curr_m;<br>&nbsp;&nbsp;Z&nbsp;=&nbsp;zeros(m,num_data);<br>&nbsp;&nbsp;Alpha=zeros(m,m);<br><br>&nbsp;&nbsp;Z(1:curr_m,:)&nbsp;=&nbsp;init_model.Z;<br>&nbsp;&nbsp;Alpha(1:curr_m,1:curr_m)&nbsp;=&nbsp;init_model.Alpha;<br><span class=keyword>end</span><br><br><span class=keyword>if</span>&nbsp;verb,&nbsp;<span class=io>fprintf</span>(<span class=quotes>'('</span>);&nbsp;<span class=keyword>end</span><br><br><span class=keyword>for</span>&nbsp;i=curr_m+1:m,<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<span class=comment>%&nbsp;find&nbsp;vector&nbsp;with&nbsp;highest&nbsp;reconstruction&nbsp;error</span><br>&nbsp;&nbsp;[curr_maxerr,new_inx]&nbsp;=&nbsp;max(&nbsp;Errors&nbsp;);<br>&nbsp;&nbsp;sel_inx&nbsp;=&nbsp;[sel_inx,new_inx];<br><br>&nbsp;&nbsp;<span class=comment>%&nbsp;orthonormalization</span><br>&nbsp;&nbsp;tmp&nbsp;=&nbsp;kernel(&nbsp;X(:,new_inx),&nbsp;X(:,work_inx),&nbsp;ker,&nbsp;arg&nbsp;);&nbsp;<br>&nbsp;&nbsp;kercnt&nbsp;=&nbsp;kercnt&nbsp;+&nbsp;num_data&nbsp;-&nbsp;i;<br><br>&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;i&nbsp;&gt;&nbsp;1,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z(i,work_inx)&nbsp;=&nbsp;...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(tmp&nbsp;-&nbsp;Z(1:i-1,new_inx)'*Z(1:i-1,work_inx))/sqrt(Errors(new_inx));&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha(i,:)&nbsp;=&nbsp;-&nbsp;Z(1:i-1,new_inx)'*Alpha(1:i-1,:);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha(i,i)&nbsp;=&nbsp;1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha(i,:)&nbsp;=&nbsp;Alpha(i,:)/sqrt(Errors(new_inx));<br>&nbsp;&nbsp;<span class=keyword>else</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Z(1,:)&nbsp;=&nbsp;tmp/sqrt(Errors(new_inx));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alpha(1,1)&nbsp;=&nbsp;1/sqrt(Errors(new_inx));<br>&nbsp;&nbsp;<span class=keyword>end</span><br><br>&nbsp;&nbsp;<span class=comment>%&nbsp;Error(i)&nbsp;=&nbsp;k(i,i)-k'(i,i)</span><br>&nbsp;&nbsp;Errors(work_inx)&nbsp;=&nbsp;Errors(work_inx)&nbsp;-&nbsp;Z(i,work_inx).^2;&nbsp;&nbsp;<br><span class=comment>%&nbsp;&nbsp;Errors(sel_inx)=zeros(1,length(sel_inx));</span><br>&nbsp;&nbsp;work_inx(find(work_inx==new_inx))&nbsp;=&nbsp;[];<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;<span class=comment>%&nbsp;store&nbsp;errors</span><br>&nbsp;&nbsp;MsErr&nbsp;=&nbsp;[MsErr,&nbsp;sum(Errors)/num_data];<br>&nbsp;&nbsp;MaxErr&nbsp;=&nbsp;[MaxErr,&nbsp;max(Errors)];<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;verb,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class=io>fprintf</span>(<span class=quotes>'.'</span>,&nbsp;i,&nbsp;MsErr(<span class=keyword>end</span>)&nbsp;);<br>&nbsp;&nbsp;<span class=keyword>end</span><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<span class=comment>%&nbsp;evaluate&nbsp;stopping&nbsp;conditions:</span><br>&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;maxerr&nbsp;&gt;=&nbsp;MaxErr(<span class=keyword>end</span>)&nbsp;|&nbsp;mserr&nbsp;&gt;=&nbsp;MsErr(<span class=keyword>end</span>),<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class=jump>break</span>;<br>&nbsp;&nbsp;<span class=keyword>end</span><br><span class=keyword>end</span><br><br><span class=keyword>if</span>&nbsp;verb,&nbsp;<span class=io>fprintf</span>(<span class=quotes>')\n'</span>);&nbsp;<span class=keyword>end</span><br><br><span class=comment>%&nbsp;cut&nbsp;off&nbsp;non-used&nbsp;memory&nbsp;if&nbsp;number&nbsp;of&nbsp;used&nbsp;base&nbsp;vector&nbsp;is&nbsp;less&nbsp;than&nbsp;m</span><br>Alpha=Alpha(1:i,1:i);<br>Z&nbsp;=&nbsp;Z(1:i,:);<br><br><span class=jump>return</span>;<br><span class=comment>%&nbsp;EOF</span><br></code>

⌨️ 快捷键说明

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