2013-02-23 3 views
0

У меня есть функция, указанная внизу этого сообщения, которая должна возвращать матрицу с одинаковым размером матрицы x с пикселями, имеющими степень членства y = 1 до 1 и другие пиксели до 0.Результат не так, как ожидалось

Но, когда я запускал функцию я не получил ожидаемых результатов следующим образом (почему?):

>> x = [1 4 3; 6 4 3; 6 9 3; 2 4 3; 5 4 0; 5 3 1; 6 4 7]; 
    >> y = [0 0 1; 1 1 0; 1 1 0; 0 1 1; 0.2 0.8 0.54; 1 1 1; 0 0 0]; 

>> pixel_val(x,y) 

ans = 

    0  0  0 
    0  0  0 
    0  0  0 
    0  0  0 
    0  0  0 
    1  1  1 
    0  0  0 



     function c = pixel_val(x, y) 
     [ii,jj]=find(y==1); 
     x(ii,jj)=1; 
     [ii2,jj2] = find (y~=1); 
     x(ii2,jj2)=0; 
     c = x; 
     end 

Спасибо.

ответ

1

Индексы [ii, jj], добавленные find не такие, как вы думаете.

На самом деле вам не нужны два выходных аргумента. Попробуйте это вместо

ii  = find(y==1); 
x(ii) = 1; 
ii  = find(y~=1); 
x(ii) = 0; 

Или, еще лучше, использовать логическую индексацию, а не find и сделать это в одной строке:

x(y==1) = 1; 
x(y~=1) = 0; 
Смежные вопросы