将指定的索引设置为零

时间:2011-03-10 11:00:22

标签: matlab

我有两个大小相同的矩阵(x1x2)。我想在x1中使用等于零的元素,在x2中将相同元素置于零。

我现在得到的非工作解决方案如下:

[i j] = find(x1 == 0);
x2(i,j) = 0;

我还有一个有效的解决方案:

[i j] = find(x1 == 0);
for n=1:length(i)
    x2(i(n),j(n)) = 0;
end

谢谢!

1 个答案:

答案 0 :(得分:2)

试试x2(x1 == 0) = 0。例如:

>> x1 = rand(5, 5)

x1 =

    0.4229    0.6999    0.5309    0.9686    0.7788
    0.0942    0.6385    0.6544    0.5313    0.4235
    0.5985    0.0336    0.4076    0.3251    0.0908
    0.4709    0.0688    0.8200    0.1056    0.2665
    0.6959    0.3196    0.7184    0.6110    0.1537

>> x2 = randi(2, 5, 5) - 1

x2 =

     0     1     1     0     1
     0     1     0     0     1
     1     1     1     1     0
     0     1     1     1     1
     1     0     0     0     0

>> x1(x2 == 0) = 0

x1 =

         0    0.6999    0.5309         0    0.7788
         0    0.6385         0         0    0.4235
    0.5985    0.0336    0.4076    0.3251         0
         0    0.0688    0.8200    0.1056    0.2665
    0.6959         0         0         0         0