如何在Matlab中更清晰地编写?

如何在Matlab中更清晰地编写?,matlab,lambda,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 您可以一次对整个阵列进行操作: p(p >= 0.5) = 1; p(p

我知道必须有一个更干净更优雅的方法来做到这一点。我有一个范围为[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

您可以一次对整个阵列进行操作:

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

您可以一次对整个阵列进行操作:

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

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

您可以简单地说p=p>=0.5。布尔运算符在数组上工作,并返回由布尔值组成的逻辑数组。

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

p = (p >= 0.5);

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

p = (p >= 0.5);

只是为了多样化。您还可以执行以下操作:

p = floor(p + 0.5);

这也适用于[0,1]范围内的其他阈值。

仅针对多样性。您还可以执行以下操作:

p = floor(p + 0.5);

这也适用于[0,1]范围内的其他阈值。

我觉得自己很笨+1.在常规Python中,您可能会对p中的k执行[intk>=0.5]。事实上,由于OP无论如何都在覆盖p,因此他最好避免sigmoid调用的开销,只执行p=dotheta,X>=0.0;我觉得自己很笨+1.在常规Python中,您可能会对p中的k执行[intk>=0.5]。事实上,由于OP无论如何都在覆盖p,因此他最好避免sigmoid调用的开销,只执行p=dotheta,X>=0.0;