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

📄 gridsearch.html

📁 matlab中进行人脸识别研究时用到的所有程序码路径的设置.
💻 HTML
字号:
<html><head>  <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">  <title>gridsearch.m</title><link rel="stylesheet" type="text/css" href="../../m-syntax.css"></head><body><code><span class=defun_kw>function</span>&nbsp;<span class=defun_out>[min_x,min_y,X,Y]</span>=<span class=defun_name>gridsearch</span>(<span class=defun_in>Min,Max,Grid,nloops,fun,varargin</span>)
<br><span class=h1>%&nbsp;GRIDSEARCH&nbsp;Function&nbsp;minimization&nbsp;using&nbsp;grid&nbsp;search.
</span><br><span class=help>%
</span><br><span class=help>%&nbsp;<span class=help_field>Synopsis:</span></span><br><span class=help>%&nbsp;&nbsp;[min_x,min_y,X,Y]=gridsearch(Min,Max,Grid,nloops,fun)
</span><br><span class=help>%&nbsp;&nbsp;[min_x,min_y,X,Y]=gridsearch(Min,Max,Grid,nloops,fun,varargin)
</span><br><span class=help>%
</span><br><span class=help>%&nbsp;<span class=help_field>Descritpion:</span></span><br><span class=help>%&nbsp;&nbsp;This&nbsp;function&nbsp;implements&nbsp;the&nbsp;grid&nbsp;search&nbsp;to&nbsp;find&nbsp;the&nbsp;minimum
</span><br><span class=help>%&nbsp;&nbsp;of&nbsp;a&nbsp;given&nbsp;function&nbsp;y&nbsp;=&nbsp;fun(x),&nbsp;x&nbsp;\in&nbsp;X.
</span><br><span class=help>%&nbsp;&nbsp;The&nbsp;domain&nbsp;X&nbsp;is&nbsp;discretized&nbsp;to&nbsp;the&nbsp;grid&nbsp;with&nbsp;minimal&nbsp;and&nbsp;
</span><br><span class=help>%&nbsp;&nbsp;maximal&nbsp;point&nbsp;given&nbsp;by&nbsp;Min&nbsp;and&nbsp;Max&nbsp;respectively.&nbsp;Number&nbsp;of&nbsp;points&nbsp;
</span><br><span class=help>%&nbsp;&nbsp;of&nbsp;the&nbsp;grid&nbsp;is&nbsp;given&nbsp;by&nbsp;Grid.&nbsp;The&nbsp;Max,&nbsp;Min&nbsp;and&nbsp;Grid&nbsp;are&nbsp;vectors
</span><br><span class=help>%&nbsp;&nbsp;their&nbsp;entries&nbsp;correspond&nbsp;to&nbsp;individual&nbsp;dimensions&nbsp;of&nbsp;X.
</span><br><span class=help>%&nbsp;&nbsp;After&nbsp;the&nbsp;mininum&nbsp;is&nbsp;found&nbsp;then&nbsp;the&nbsp;grid&nbsp;search&nbsp;is&nbsp;recursively&nbsp;
</span><br><span class=help>%&nbsp;&nbsp;repeated&nbsp;with&nbsp;a&nbsp;finer&nbsp;grid.&nbsp;Number&nbsp;of&nbsp;nested&nbsp;loops&nbsp;is&nbsp;given&nbsp;by&nbsp;nloops.&nbsp;
</span><br><span class=help>%&nbsp;&nbsp;The&nbsp;string&nbsp;fun&nbsp;determines&nbsp;function&nbsp;to&nbsp;be&nbsp;minimized.&nbsp;The&nbsp;function&nbsp;is&nbsp;
</span><br><span class=help>%&nbsp;&nbsp;&nbsp;called&nbsp;as&nbsp;y=feval(fun,x,varargin{:}).
</span><br><span class=help>%&nbsp;&nbsp;
</span><br><span class=help>%&nbsp;<span class=help_field>Input:</span></span><br><span class=help>%&nbsp;&nbsp;Min&nbsp;[dim&nbsp;x&nbsp;1]&nbsp;Minimum&nbsp;point&nbsp;of&nbsp;the&nbsp;grid.
</span><br><span class=help>%&nbsp;&nbsp;Max&nbsp;[dim&nbsp;x&nbsp;1]&nbsp;Maximum&nbsp;point&nbsp;of&nbsp;the&nbsp;grid.
</span><br><span class=help>%&nbsp;&nbsp;Grid&nbsp;[dim&nbsp;x&nbsp;1]&nbsp;Number&nbsp;of&nbsp;point&nbsp;in&nbsp;the&nbsp;grid,&nbsp;i.e.&nbsp;grid&nbsp;density.
</span><br><span class=help>%&nbsp;&nbsp;nloops&nbsp;[1x1]&nbsp;Number&nbsp;of&nbsp;nested&nbsp;loops&nbsp;of&nbsp;the&nbsp;grid&nbsp;search.
</span><br><span class=help>%&nbsp;&nbsp;fun&nbsp;[string]&nbsp;Identifies&nbsp;the&nbsp;minimized&nbsp;function.
</span><br><span class=help>%&nbsp;&nbsp;varargin&nbsp;[cell]&nbsp;Additional&nbsp;arguments&nbsp;of&nbsp;the&nbsp;minimized&nbsp;function.
</span><br><span class=help>%
</span><br><span class=help>%&nbsp;<span class=help_field>Output:</span></span><br><span class=help>%&nbsp;&nbsp;min_x&nbsp;[dim&nbsp;x&nbsp;1]&nbsp;Found&nbsp;minimum.
</span><br><span class=help>%&nbsp;&nbsp;min_y&nbsp;[1x1]&nbsp;min_y&nbsp;=&nbsp;fun(min_x).
</span><br><span class=help>%&nbsp;&nbsp;X&nbsp;[dim&nbsp;x&nbsp;n]&nbsp;Points&nbsp;which&nbsp;the&nbsp;grid&nbsp;search&nbsp;checked&nbsp;through.
</span><br><span class=help>%&nbsp;&nbsp;Y&nbsp;[1&nbsp;x&nbsp;n]&nbsp;Y(i)=fun(X(:,i)).
</span><br><span class=help>%
</span><br><span class=help>%&nbsp;<span class=help_field>Example:</span></span><br><span class=help>%&nbsp;&nbsp;[min_x,min_y,X,Y]=gridsearch(0,10,10,3,'sin');
</span><br><span class=help>%&nbsp;&nbsp;figure;&nbsp;grid&nbsp;on;&nbsp;hold&nbsp;on;
</span><br><span class=help>%&nbsp;&nbsp;plot(X,Y,'.');
</span><br><span class=help>%&nbsp;&nbsp;plot(min_x,min_y,'+r');
</span><br><span class=help>%
</span><br><hr><br><span class=help1>%&nbsp;<span class=help1_field>About:</span>&nbsp;Statistical&nbsp;Pattern&nbsp;Recognition&nbsp;Toolbox
</span><br><span class=help1>%&nbsp;(C)&nbsp;1999-2003,&nbsp;Written&nbsp;by&nbsp;Vojtech&nbsp;Franc&nbsp;and&nbsp;Vaclav&nbsp;Hlavac
</span><br><span class=help1>%&nbsp;&lt;a&nbsp;href="http://www.cvut.cz"&gt;Czech&nbsp;Technical&nbsp;University&nbsp;Prague&lt;/a&gt;
</span><br><span class=help1>%&nbsp;&lt;a&nbsp;href="http://www.feld.cvut.cz"&gt;Faculty&nbsp;of&nbsp;Electrical&nbsp;Engineering&lt;/a&gt;
</span><br><span class=help1>%&nbsp;&lt;a&nbsp;href="http://cmp.felk.cvut.cz"&gt;Center&nbsp;for&nbsp;Machine&nbsp;Perception&lt;/a&gt;
</span><br><br><span class=help1>%&nbsp;<span class=help1_field>Modifications:</span>
</span><br><span class=help1>%&nbsp;&nbsp;18-July-2003,&nbsp;VF
</span><br><span class=help1>%&nbsp;&nbsp;17-July-2003,&nbsp;VF
</span><br><br><hr>num_variables=length(Min);
<br>
<br><span class=keyword>if</span>&nbsp;num_variables&nbsp;&gt;&nbsp;length(Grid),
<br>&nbsp;&nbsp;&nbsp;Grid&nbsp;=&nbsp;Grid*ones(size(Min));
<br><span class=keyword>end</span>
<br>
<br><span class=keyword>if</span>&nbsp;Grid&nbsp;&gt;&nbsp;1,&nbsp;step=(Max-Min)./(Grid-1);&nbsp;<span class=keyword>else</span>&nbsp;step&nbsp;=&nbsp;0;&nbsp;<span class=keyword>end</span>
<br>x=Min;
<br>
<br>min_y&nbsp;=&nbsp;inf;
<br>stop&nbsp;=&nbsp;0;
<br>
<br>X&nbsp;=&nbsp;[];
<br>Y&nbsp;=&nbsp;[];
<br>
<br><span class=keyword>while</span>&nbsp;~stop,
<br>&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;y&nbsp;=&nbsp;<span class=eval>feval</span>(fun,&nbsp;x,&nbsp;<span class=stack>varargin</span>{:});
<br>
<br>&nbsp;&nbsp;&nbsp;X&nbsp;=&nbsp;[X,x(:)];
<br>&nbsp;&nbsp;&nbsp;Y&nbsp;=&nbsp;[Y,y];
<br>&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;y&nbsp;&lt;&nbsp;min_y,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_y&nbsp;=&nbsp;y;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_x&nbsp;=&nbsp;x;
<br>&nbsp;&nbsp;&nbsp;<span class=keyword>end</span>
<br>&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;x(1)&nbsp;=&nbsp;x(1)&nbsp;+&nbsp;step(1);
<br>
<br>&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;Grid&nbsp;&gt;&nbsp;1,
<br>&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>for</span>&nbsp;i=1:num_variables,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;x(i)-step(i)/2&nbsp;&gt;&nbsp;Max(i),
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x(i)=Min(i);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;i+1&nbsp;&lt;=&nbsp;length(x),
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x(i+1)=x(i+1)+step(i+1);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>else</span>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stop=1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=keyword>end</span>
<br>&nbsp;&nbsp;&nbsp;<span class=keyword>else</span>&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stop&nbsp;=&nbsp;1;
<br>&nbsp;&nbsp;&nbsp;<span class=keyword>end</span>
<br><span class=keyword>end</span>
<br>
<br><span class=keyword>if</span>&nbsp;nloops&nbsp;&gt;&nbsp;1,
<br><span class=comment>%&nbsp;&nbsp;&nbsp;Min&nbsp;=&nbsp;min_x&nbsp;-&nbsp;step/2;
</span><br><span class=comment>%&nbsp;&nbsp;&nbsp;Max&nbsp;=&nbsp;min_x&nbsp;+&nbsp;step/2;
</span><br>
<br>&nbsp;&nbsp;&nbsp;tmp=2*step./Grid;
<br>&nbsp;&nbsp;&nbsp;Min&nbsp;=&nbsp;min_x&nbsp;-&nbsp;step&nbsp;+&nbsp;tmp;
<br>&nbsp;&nbsp;&nbsp;Max&nbsp;=&nbsp;min_x&nbsp;+&nbsp;step&nbsp;-&nbsp;tmp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;[x,&nbsp;y,&nbsp;tmpX,&nbsp;tmpY]=gridsearch(&nbsp;Min,&nbsp;Max,&nbsp;Grid,&nbsp;nloops-1,&nbsp;fun,&nbsp;<span class=stack>varargin</span>{:});
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;<span class=keyword>if</span>&nbsp;y&nbsp;&lt;&nbsp;min_y,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_y&nbsp;=&nbsp;y;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_x&nbsp;=&nbsp;x;
<br>&nbsp;&nbsp;&nbsp;<span class=keyword>end</span>
<br>&nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;X&nbsp;=&nbsp;[X,tmpX];
<br>&nbsp;&nbsp;&nbsp;Y&nbsp;=&nbsp;[Y,tmpY];
<br>
<br><span class=keyword>end</span>
<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 + -