在Matlab中更改矩阵的值

时间:2013-12-11 18:04:36

标签: matlab

我有一个矩阵100x50。我想要做的是更改值>>的单元格。 0到0,以及值为0到1的单元格。我知道它很简单,但如果有人可以请不要循环建议如何做。

5 个答案:

答案 0 :(得分:4)

iiPos = M>0;
iiZeros = M==0;

M(iiPos) = 0;
M(iiZeros) = 1;

答案 1 :(得分:4)

如果只有非负数,这是使用logical not的一种巧妙的方法:

M =
   1   2   0   2
   2   1   2   2
   0   1   2   1
   1   0   1   2

M = ~M;    
M =
   0   0   1   0
   0   0   0   0
   1   0   0   0
   0   1   0   0

如果你也有负数,那么:

M = 
   0  -1   0   3
  -3   0  -1   0
   0  -2   0   1
   1   0  -1   1

M(M >= 0) = ~M(M >= 0)    
M =
   1  -1   1   0
  -3   1  -1   1
   1  -2   1   0
   0   1  -1   0

答案 2 :(得分:2)

为什么这么复杂?

M = (M == 0);

为此,零必须精确为零。如果它们只是大约为零,请使用

M = (abs(M) < eps);

答案 3 :(得分:0)

sizeMat = size(mat); % Obtain the size of the matrix
final = zeros(sizeMat); % Create a zero full matrix.
idxZero = find(Mat == 0); % Find where = 0;
final(idxZero) = 1; % switch to 1.

答案 4 :(得分:0)

对于带负数的一般情况:

A = A.*(A<0) + (A==0);