我的MATLAB布尔运算符有问题。
非ASCII范围:
只有在上述范围内没有字符时,if条件才会成立。
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
执行以下操作时会出现问题:
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
它没有按预期工作 - 这种情况似乎一直都是假的。为什么呢?
答案 0 :(得分:0)
首先,您指定&#34; ASCII范围&#34;是[0,2]和[129,255]。据我所知,标准ASCII为[0,127],包括30多个控制字符。
接下来,你说&#34; 128&#34;但请查看&#34; < 128
&#34;。这意味着127以上,而不是128-对于128和129都是假的,我认为这不是你想要的,因为你说&#34;高于128&#34;。但是,从我记得的情况来看,ASCII并没有达到128 - 它是从0到127(包括0和127)的7位格式。并且127应该是&#34;删除&#34;,所以我不确定在实践中是否包括127个问题。
同样,你的第二个区块有&#34; > 2
&#34 ;,它排除0,1和2(2不大于2)。重要的是,你的第一个块不会排除2-只有0和1. 2显然是&#34;文本的开头&#34;所以如果所有的话我都不会感到惊讶ASCII字符串有它,这可以解释为什么第二个条件总是错误。