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行都是不正确的。请帮忙
答案 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;