2015-01-11 5 views
-2

я не понимаю, что это значит (1:65536 < wthresh) в следующей команде:MATLAB код, который я не понимаю

cw = reshape(b(:)' .* (1:65536 < threshold), 256, 256); 

б изображение размером 256x256 и 65536 = 256х256. Я знаю только команды, подобные этому:

cw = reshape(b(:)' .* (b < threshold), 256, 256); 

Значит, мы сохраняем только пиксели b, которые меньше порога.

ответ

4

Просто найти с помощью простых примеров:

>> (1:10<3) 
ans = 

    1 1 0 0 0 0 0 0 0 0 

Это создает вектор, где первые 2 элемента устанавливаются в 1, а остальные 0.

>> b=1:10 
b = 

    1 2 3 4 5 6 7 8 9 10 

>> b.*(1:10<3) 
ans = 

    1 2 0 0 0 0 0 0 0 0 

Это делает поэлементно умножение с вектором b. Таким образом, в основном сохраняются первые элементы threshold-1, а остальные установлены в 0. reshape снова преобразует вектор в матрицу 256 x 256. Поскольку я не знаю ожидаемого результата, я не могу судить, является ли это желаемым поведением, или если это ошибка в коде.

+0

Я взял на себя смелость в редактировании ответа на грамматические исправления. Надеюсь, ты не против. Кстати, это правильная интерпретация этого кода, поэтому +1 для вас. – rayryeng

+0

нет проблем, rayryeng. Благодарю. – BerndGit