将2D逻辑数组中的所有元素转换为“零”,除了其坐标在另一个数组中给出的元素

时间:2016-03-29 16:58:32

标签: arrays matlab

我正在使用2D逻辑数组,我需要将其所有元素设为零,除了一些索引在另一个2D双数组中随机给出的元素。随机我的意思是行没有。和cols没有。没有顺序。

考虑:

        A=[1 0 0; 0 1 1; 1 1 0]; %The logical array

       I=[3 1; 2 3]; % indices of the elements i want them unchanged(stay 1)

        final_A=[0 0 0; 0 0 1; 1 0 0]; % expected output

任何帮助?

1 个答案:

答案 0 :(得分:4)

您真的需要一个大小为A的矩阵,其中I中的元素设置为true,其他所有元素都设置为false。您可以使用sub2indI中指定的行/列转换为绝对索引。

final_A = false(size(A));
final_A(sub2ind(size(A), I(:,1), I(:,2))) = true;

    0     0     0
    0     0     1
    1     0     0

这假设A中指定的I的所有元素都以true开头。如果不是这种情况,那么您需要确保仅保留true中最初A的那些。您可以使用元素and (&) operation来完成此操作。

final_A = final_A & A;