在矩阵中同时删除行和列

obc*_*don 2 matlab matrix

是否可以同时删除矩阵的行和列?

例:

M = magic(3)

M =

   8   1   6
   3   5   7
   4   9   2
Run Code Online (Sandbox Code Playgroud)

并使用单线移除第2列和第2行以获得:

M = 

   8  6
   4  2
Run Code Online (Sandbox Code Playgroud)

Sue*_*ver 7

您可以为行和列索引提供索引数组,MATLAB将自动返回所有排列(通常是一个烦人的功能,但这里有一个好处).

所以你可以这样做:

M([1 3], [1 3])
Run Code Online (Sandbox Code Playgroud)

或者更灵活,您可以使用逻辑索引

M([true false true], [true false true])
Run Code Online (Sandbox Code Playgroud)

或者更一般地说(可能有更多的行和列)

row = 2;        % Could be an array of rows to exclude
column = 2;     % Could be an array of columns to exclude

out = M(~ismember(1:size(M, 1), row), ~ismember(1:size(M, 2), column))
Run Code Online (Sandbox Code Playgroud)