2012-04-27 371 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