私は紙の上では反復法に精通していますが、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のメンバーに感謝します]
これらの各列ベクトルを呼び出して単一の値を返す関数があります。列ベクトルとその 4 つの隣接ベクトルを評価し、これらの 5 つの列ベクトルから関数によって得られる最大値を見つける 2-D 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 つのポイントから、関数から返された値が最大のものを選択し、そのポイントに移動して、メソッドを再実行します。これは、グローバルな最大値に達するまで続きます。これは基本的に反復最適化手法です (原始的な手法ではありますが)。注: 最適化ツールボックスにアクセスできません。
どうもありがとう。