从GNU Octave的matrix中移除一列

在GNU八度,我想能够从matrix中删除特定的列。 为了通用性。 我也希望能够从matrix中删除特定的行。

假设我有这个:

mymatrix = eye(5) mymatrix = Diagonal Matrix 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 

我想删除第2列和第4列,但是当我删除第2列时,第4列的位置已经移动到第3列,这使我的头部受伤。 一定有更好的方法!

这将做的伎俩:

删除第2和第4

 mymatrix(:,[2,4]) = [] 

删除 2和4

 mymatrix([2,4],:) = [] 

如果你不知道列或行的确切数量,你可以使用神奇的“结束”索引,例如:

 mymatrix(2:end,:) % all but first row 

这也允许您将行或列分割出matrix,而不必将其重新分配给新的variables。

这样做的相反方法:

 columns_you_want_to_keep = [1, 3, 5] new_matrix = my_matrix(:,columns_you_want_to_keep) 

如何删除八度中的多个列:

如何删除第2和第4列:

 columns_to_remove = [2 4]; matrix(:,columns_to_remove)=[] 

插图:

 mymatrix = eye(5) mymatrix = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 columns_to_remove = [2 4]; mymatrix(:,columns_to_remove)=[] mymatrix = 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1