2012-02-07 67 views
7

我在matlab中運行代碼後,我遇到了這個錯誤,並不確定如何解決它。我怎麼解決這個問題。如何解決&&操作數邏輯標量

警告:

操作數的||和& &運算符必須可轉換爲邏輯標量值。

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 

回答

7

如果DIX和DIY是矩陣(相對於1-d載體),max(dIx)max(dIy)將返回向量。

&&||應該用來比較標量而不是矢量。

可能要鍵入

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

,但我不能告訴是肯定的,因爲我不知道是什麼代碼是應該做的:)

5

使用&|爲基質的替代&&||

&&||是短路操作員。如果你仔細想想,它們對矩陣沒有意義。例如,短路或 - ||停止並返回true每當第一個參數是true
但是,你會如何擴展到矩陣?