3
代碼進行Matlab的風格的短路操作:警告:對於運營商
if (round(xw(1))>2) & (round(xw(2))>2) & (round(xw(1))<h-1) & (round(xw(2))<w-1)
W0 = img(round(xw(1))-2:round(xw(1))+2,round(xw(2))-2:round(xw(2))+2);
else
NA=1;
break
endif
xw
是包含的點的座標的列向量。 h
和w
是圖像的尺寸。
我使用的代碼,這些線路在OCTAVE
但是當我運行它包含的是,儘管使用&
的這些行我得到一個警告
warning: Matlab-style short-circuit operation performed for operator &
是它的函數,八度正在執行&&
操作?
我瞭解到,如果我使用&&
,則根據第一個語句是True
或False
,將評估下一個語句。
那麼,當我收到這個警告時,這是怎麼回事?那麼這個問題的解決方案是什麼?
我想檢查是否所有的陳述是True
而不只是第一個。
但爲什麼會引發這樣的警告? – Siladittya
正如我寫的,在if和loop表達式的上下文中隱含地將&放入'&&'是特定於Matlab的。如果您查看Octave的文檔,'&'是有規律的元素布爾表達式。如果你不想兼容Matlab,把它隱式地轉換成'&&'是非常不規則的,而且肯定會提出一個警告。鑑於Matlab的兼容性可能是Octave的高優先級,我個人發現發佈警告是嚴格性和兼容性之間的良好折衷。 – jsalonen
但是當我使用代碼 'if(epsilon_c <0.05)&&(NA == 0)&&(round(xk(1))> 0)&&(round(xk(2))> 0)&&( round(xk(1))
Siladittya