1

2D行列があり、この行列の(i、j)の近傍を、それぞれx方向とy方向にMサイズとNサイズで見つけたいと思います。簡単にできることは知っていますが、私の問題は、(i、j)がコーナーに近く、MとNが大きい場合です。この場合、私はマトリックスを超えたくありません。MATLABでこの問題の関数または簡単な解決策はありますか?

4

1 に答える 1

5

私が正しく理解している場合は、行列から部分行列を抽出します。部分行列は、行から列i-Mi+M、列j-Nからへと中央に配置されj+Nます。

この場合、無効なインデックスの選択を避けたい場合は、最小/最大関数を使用して選択を切り刻むことができます。例:

matrix = randi(10,20,15);
siz = size(matrix);

i=2;
j=5;
M=10;
N=3;

selectrows = max(1,i-M):min(siz(1),i+M);
selectcols = max(1,j-N):min(siz(2),j+N);
result = matrix(selectrows, selectcols);
于 2012-09-14T07:24:21.430 に答える