2015-04-01 50 views
0

我想根据逻辑数组将元素的一些元素转换为零。作为索引的逻辑数组在MATLAB中将元素转换为零

假设我们有一个随机5 x 5矩阵:

b = 

0.0344 0.1869 0.7547 0.1190 0.2238 
0.4387 0.4898 0.2760 0.4984 0.7513 
0.3816 0.4456 0.6797 0.9597 0.2551 
0.7655 0.6463 0.6551 0.3404 0.5060 
0.7952 0.7094 0.1626 0.5853 0.6991 

和我有零和一的具有相同尺寸的数组:

a = 

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

a(logical(b))给我,我要找的元素,但是以矢量形式:

ans = 

0.4387 
0.3816 
0.1869 
0.4456 
0.6463 
0.7547 
0.2760 
0.6551 
0.1626 
0.4984 
0.9597 
0.5853 
0.2551 
0.5060 

我怎样才能得到下面的矩阵呢?

0   0.1869 0.7547 0   0 
0.4387 0   0.2760 0.4984 0.7513 
0.3816 0.4456 0   0.9597 0.2551 
0   0.6463 0.6551 0   0.5060 
0   0   0.1626 0.5853 0 

回答

2

我刚刚意识到在另一个问题上有答案。

设置b(~logical(a)) = 0的作品。

(因为问题是措辞稍有不同只是保持这个位置。)

+3

你可以做'B(A == 0)= 0;'要更短。我会说这更明确地说明你想要做什么而不是使用'〜逻辑(a)'。 – rayryeng 2015-04-01 00:15:58

+2

你也可以做一个元素乘法'。*'。 – knedlsepp 2015-04-01 00:20:45

相关问题