2012-04-27 104 views
0

我有一個MATLAB布爾運算符的問題。matlab布爾運算符

非ASCII範圍:

  • 0 - 2
  • 以上128

if條件變爲真僅當有在上述範圍內沒有字符。條件似乎是假所有的時間 -

if any(out.autoc < 128 & out.autoc > 2 & ... 
     out.cprom < 128 & out.cprom > 2) 
    fprintf(file_1, '%s,' , out.autoc); 
    fprintf(file_1, '%s,' , out.cprom); 
    fprintf(file_1, '\r\n'); 
else 
    display(fileName); 
end 

預期它不工作:

if any(out.autoc < 128 & out.autoc ~= 0 & out.autoc ~= 1 & ... 
     out.cprom < 128 & out.cprom ~= 0 & out.cprom ~= 1)  
    fprintf(file_1, '%s,' , out.autoc); 
    fprintf(file_1, '%s,' , out.cprom); 
    fprintf(file_1, '\r\n'); 
else 
    display(fileName); 
end 

的問題,當我執行下面出現。爲什麼?

+0

你能提供一些我們可以用來測試它的代碼嗎?由ascii範圍 – Superbest 2012-04-27 08:07:26

回答

0

首先,您指定「ASCII範圍」爲[0,2]和[129,255]。據我所知,標準的ASCII是[0,127],包括一些30多個控制字符。

接下來,你會說「128以上」,但請檢查「< 128」。這意味着127以上,而不是128-對於128以及129,這將是錯誤的,我認爲這不是你想要的,因爲你說「128以上」。但是,從我記得的數據來看,ASCII不會達到128位 - 它是一個從0到127的7位格式。 127應該是「刪除」,所以我不確定在實際中是否包括127個事項。

同樣,你的第二個塊有「> 2」,其中不包括0,1和2(2不大於2)。重要的是,你的第一個塊不是排除2-只有0和1. 2顯然是「文本的開始」,所以我不會感到驚訝,如果所有的ASCII字符串都有它,這將解釋爲什麼第二個條件總是假。

+0

我並不意味着實際ascii範圍。我只想在這些範圍中允許ascii字符使if條件成立。 – klijo 2012-04-27 10:19:26