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