我想返回 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 是[3,4,5]
,则around_pos 将包括[3,4,6]
,这是超出范围的)
显然我可以删除around_pos 值<0 或>size(mat),但这似乎不是一个非常好的MATLAB 方法。有任何想法吗?