首页 > 解决方案 > 如何从matlab中的矩阵中删除特定值

问题描述

我有 420x700 的图像矩阵,我想删除每一行中的一个特定值,改变图像尺寸。这就像从中删除一列,但不是直线,成为 420x699 图像。我应该将删除值之前的值保持水平,并将其之后的所有值移回 1 个位置。

RGB = imread('image.jpg');
I1 = RGB(:,:,1);

我怎么做?

标签: matlabimage-processingmatrix

解决方案


这是一个很好的问题,我想不出没有 for 循环的方法。

假设要从中删除一列M的矩阵,以及每行要删除的元素的列索引的向量。nr-by-ncRnr-by-1

以下代码创建了一个新矩阵A,其中“列”从中删除M,向量B中的元素已删除:

    [nr,nc] = size(M);
    A = zeros(nr,nc-1,'like',M);
    B = zeros(nr,1,'like',M);
    
    for k = 1:nr
        r = R(k);
        t = [ 1:r-1, r+1:nc ];
        
        A(k,:) = M(k,t);
        B(k) = M(k,r);
    end

推荐阅读