我正在使用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
任何帮助?
答案 0 :(得分:4)
您真的需要一个大小为A
的矩阵,其中I
中的元素设置为true
,其他所有元素都设置为false
。您可以使用sub2ind
将I
中指定的行/列转换为绝对索引。
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;