2012-02-07 23 views
7

Sau khi tôi chạy mã trong MATLAB, tôi gặp lỗi này và không chắc chắn cách giải quyết nó. Làm thế nào tôi có thể giải quyết vấn đề này.Cách giải quyết && toán hạng tới vô hướng lô-gic

Cảnh báo:

Phép toán đến || và các toán tử & & phải được chuyển đổi thành các giá trị vô hướng lôgíc.

Jgray = double(rgb2gray(J)); 
    % Calculate the Gradients 
    [dIx, dIy] = gradient(Jgray); 
    if max(dIx)<=103 && max(dIy)<=100 
     B = abs(dIy) - abs(dIx); 
    else 
     B = abs(dIx) - abs(dIy); 
    end 

Trả lời

7

Nếu Dix và DIY là ma trận (như trái ngược với 1-D vectơ), max(dIx)max(dIy) sẽ trở lại vectơ.

&&|| nên được sử dụng để so sánh vô hướng chứ không phải vectơ.

Bạn lẽ muốn gõ

if max(dIx(:))<=103 && max(dIy(:))<=100 

nhưng tôi không thể nói chắc chắn, như tôi không biết những gì đang phải làm :)

5

Sử dụng &| cho ma trận thay vì &&, ||.

&&|| là các nhà khai thác ngắn mạch. Nếu bạn nghĩ về nó, họ không có ý nghĩa cho ma trận. Ví dụ: mạch ngắn hoặc - || dừng và trả về true bất cứ khi nào đối số đầu tiên là true.
Nhưng làm thế nào bạn sẽ mở rộng nó thành ma trận?

Các vấn đề liên quan