7

我们应该如何有效地从 Matlab 中的矩阵中删除多行和多列?向量包含应该删除的索引。

输入:t 乘 t 矩阵

输出: (tk) by (tk) 矩阵,其中 k 不相邻的行和对应的列从输入矩阵中删除。

4

1 回答 1

16

这应该可以解决您的问题。

matrix=randi(100,[50 50]);
rows2remove=[2 4 46 50 1];
cols2remove=[1 2 5 8 49];
matrix(rows2remove,:)=[];
matrix(:,cols2remove)=[];

第二个想法,如果你有索引,那么首先使用以下函数将这些索引转换为下标ind2sub

[rows2remove,cols2remove] = ind2sub(size(matrix),VecOfIndices);

现在您将获得需要删除的元素的行和列索引。不能从矩阵中删除单个元素。所以我假设您需要删除整个列和行。可以这样做:

rows2remove=unique(rows2remove);
cols2remove=unique(cols2remove); 
matrix(rows2remove,:)=[];
matrix(:,cols2remove)=[];

如果要删除单个元素,请使用元胞数组或将这些元素替换为一些过时的值,例如 9999。

于 2013-03-14T23:21:37.993 回答