这个问题在这里已有答案:
我们应该如何在Matlab中有效地从矩阵中删除多个行和列?向量包含应删除的索引 .
输入:t by t矩阵
输出:(t-k)乘以(t-k)矩阵,其中从输入矩阵中去除k个非相邻行和相应列 .
这应该可以解决您的问题 .
matrix=randi(100,[50 50]); rows2remove=[2 4 46 50 1]; cols2remove=[1 2 5 8 49]; matrix(rows2remove,:)=[]; matrix(:,cols2remove)=[];
在第二个想法,如果你有索引,那么首先使用函数 ind2sub 将这些索引转换为下标:
ind2sub
[rows2remove,cols2remove] = ind2sub(size(matrix),VecOfIndices);
现在,您将获得需要删除的元素的行和列索引 . 无法从矩阵中删除单个元素 . 所以我假设您需要删除整个列和行 . 这可以做到:
rows2remove=unique(rows2remove); cols2remove=unique(cols2remove); matrix(rows2remove,:)=[]; matrix(:,cols2remove)=[];
如果要删除单个元素,则使用单元格数组或使用某些过时值(例如9999)替换这些元素 .
1 回答
这应该可以解决您的问题 .
在第二个想法,如果你有索引,那么首先使用函数
ind2sub
将这些索引转换为下标:现在,您将获得需要删除的元素的行和列索引 . 无法从矩阵中删除单个元素 . 所以我假设您需要删除整个列和行 . 这可以做到:
如果要删除单个元素,则使用单元格数组或使用某些过时值(例如9999)替换这些元素 .