Как написать это более чисто в Matlab? - PullRequest
1 голос
/ 14 октября 2011

Я знаю, что должен быть более изящный, более элегантный способ сделать это.У меня есть массив чисел в диапазоне [0,1] и хочу проверить, какие из них больше, чем порог.Я помню, что был некоторый синтаксис, чтобы сделать это красиво.В Python я бы использовал что-то вроде лямбда-функции.

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 ]

10 голосов
/ 14 октября 2011

mtrw находится на правильном пути, но становится еще короче:

p = (p >= 0.5);
4 голосов
/ 14 октября 2011

Вы можете просто сказать p = (p>=0.5).Логические операторы работают с массивами и возвращают логические массивы (которые состоят из логических значений).

2 голосов
/ 14 октября 2011

Вы можете работать со всем массивом одновременно:

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

Для чего бы то ни было, вы можете сделать то же самое в Numpy, если p является массивом Numpy:

>>> p[p >= 0.5] = 1
>>> p[p < 0.5] = 0
0 голосов
/ 14 октября 2011

Просто для разнообразия.Вы также можете сделать:

p = floor(p + 0.5);

, что также обобщает другие пороговые значения в диапазоне [0,1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...