我熟悉纸上的迭代方法,但 MATLAB 编码对我来说相对较新,我似乎无法找到一种编码方法。
在代码语言中...
这基本上就是我所拥有的:
A = { [1;1] [2;1] [3;1] ... [33;1]
[1;2] [2;2] [3;2] ... [33;2]
... ... ... ... ....
[1;29] [2;29] [3;29] ... [33;29] }
... 2x1 列向量的 29x33 元胞数组,我从中获得:
[X,Y] = meshgrid([1:33],[1:29])
A = squeeze(num2cell(permute(cat(3,X,Y),[3,1,2]),1))
[感谢帮助我做到这一点的 stackOverflow 成员]
我有一个函数调用这些列向量中的每一个并返回一个值。我想建立一个 2-D 5 点模板方法来评估一个列向量及其 4 个邻居,并从这 5 个列向量中找到通过函数获得的最大值。
即,如果我从中间开始,评估的点将是:
1.
A{15,17}(1)
A{15,17}(2)
2.
A{14,17}(1)
A{14,17}(2)
3.
A{15,16}(1)
A{15,16}(2)
4.
A{16,17}(1)
A{16,17}(2)
5.
A{15,18}(1)
A{15,18}(2)
在这 5 个点中,该方法将选择函数返回值最大的一个,移动到该点,然后重新运行该方法。这将一直持续到达到全局最大值。它基本上是一种迭代优化方法(尽管是一种原始方法)。注意:我无权访问优化工具箱。
非常感谢你们。