首页 文章

在Matlab中删除矩阵中的行和列[重复]

提问于
浏览
7

这个问题在这里已有答案:

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

输入:t by t矩阵

输出:(t-k)乘以(t-k)矩阵,其中从输入矩阵中去除k个非相邻行和相应列 .

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)替换这些元素 .

相关问题