我们应该如何有效地从 Matlab 中的矩阵中删除多行和多列?向量包含应该删除的索引。
输入:t 乘 t 矩阵
输出: (tk) by (tk) 矩阵,其中 k 不相邻的行和对应的列从输入矩阵中删除。
这应该可以解决您的问题。
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。