如何在Matlab中更清晰地写出这个?

时间:2011-10-14 04:51:42

标签: matlab lambda

我知道必须有一种更清洁,更优雅的方式来做到这一点。我有[0,1]范围内的数字数组,想要检查哪些数字大于阈值。我记得有一些语法很好地做到这一点。在python中,我会使用类似lambda函数的东西。

p = sigmoid(dot(theta,X));
for i =1:size(p)
   if(p(i)>=0.5)
      p(i)=1
   else
       p(i)=0
   end
end

4 个答案:

答案 0 :(得分:10)

mtrw走在正确的轨道上,但它变得更短:

p = (p >= 0.5);

答案 1 :(得分:4)

您可以简单地说p = (p>=0.5)。布尔运算符处理数组,并返回逻辑数组(由布尔值组成)。

答案 2 :(得分:2)

您可以立即对整个阵列进行操作:

p(p >= 0.5) = 1;
p(p < 0.5) = 0;

如果p是一个Numpy数组,你可以在Numpy中做同样的事情:

>>> p[p >= 0.5] = 1
>>> p[p < 0.5] = 0

答案 3 :(得分:0)

只是为了变化。你也可以这样做:

p = floor(p + 0.5);

也可以推广到[0,1]范围内的其他阈值。