3D マトリックス内のセルを囲む 8 つのセルのインデックスと値を返したいと思います。
mat = rand(5,5,5);
% Cell of interest
pos = [3 3 3]
pos_val = mat(pos(1), pos(2), pos(3))
% Surrounding cells
surrounding_pos = [pos(1)-1:pos(1)+1; pos(2)-1:pos(2)+1; pos(2)-1:pos(2)+1]
surrounding_val = mat(surrounding_pos(1,:), surrounding_pos(2,:), surrounding_pos(3,:))
これは行列の中心にある値に対しては問題なく機能しますが、pos が端にある場合は機能しません。(たとえば、pos がの場合、around_pos には[3,4,5]
が含まれますが[3,4,6]
、これは範囲外です)
0 または >size(mat) 未満の Surround_pos 値を明らかに削除できますが、これはひどく MATLABian メソッドのようには見えません。何か案は?