向量的边界值:阈值函数

时间:2014-03-29 19:20:41

标签: arrays matlab vector

 H = [1 1; 1 2; 2 -1; 2 0; -1 2; -2 1; -1 -1; -2 -2;]';

我需要对每个值进行阈值处理

H(I,j) = 0 if H(I,j) > =1,
else H(I,j) = 1 if H(I,j) <=0

我已应用此代码

  a = H(1,1) 
    a(a<=0) = 1

    a(a>=1) = 0

但这意味着第一步中已经受影响的值可能会再次发生变化。阈值的正确方法是什么?上面的代码给出了错误的答案。我应该得到

a = [0 0; 0 0; 0 1;  0 1;  1 0;  1 0;   1 1;   1 1]

请帮忙

修改

根据答案现在我得到了

         0         0
         0         0
    1.0000    0.3443
    0.8138    0.9919
         0    0.7993
    0.1386    1.0000
    1.0000    1.0000
    1.0000    1.0000

可以看出,第3-6行都是不正确的。请帮忙

1 个答案:

答案 0 :(得分:0)

ind1 = H>=1; %// get indices before doing any change
ind2 = H<=0;
H(ind1) = 0; %// then do the changes
H(ind2) = 1;

如果处理非整数值,则应在比较中应用一定的容差:

tol = 1e-6; %// example tolerance
ind1 = H>=1-tol; %// get indices before doing any change
ind2 = H<=0+tol;
H(ind1) = 0; %// then do the changes
H(ind2) = 1;