2D行列があり、この行列の(i、j)の近傍を、それぞれx方向とy方向にMサイズとNサイズで見つけたいと思います。簡単にできることは知っていますが、私の問題は、(i、j)がコーナーに近く、MとNが大きい場合です。この場合、私はマトリックスを超えたくありません。MATLABでこの問題の関数または簡単な解決策はありますか?
1265 次
1 に答える
5
私が正しく理解している場合は、行列から部分行列を抽出します。部分行列は、行から列i-M
へi+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 に答える