布尔和逻辑之间的区别

时间:2014-02-26 15:04:22

标签: matlab boolean

出于好奇,如果我在MATLAB中键入这些行:

a = logical([12 0 1.2]);
b = boolean([12 0 1.2]);

输出变量ab相同(相同的值和类型)。因此,booleanlogical之间是否存在差异?

4 个答案:

答案 0 :(得分:14)

快速浏览一下布尔函数可以很好地回答你的问题:

如果您在matlab控制台中输入:edit boolean,则会得到:

function y = boolean(x)
%BOOLEAN Creates a boolean vector.
%   This function is typically used in Simulink parameter dialogs, such as
%   the Constant block dialog.  This function generates a logical vector,
%   which is treated as a boolean value in Simulink.  Now that logical is a
%   MATLAB type, this function is essentially just an alias.
%
%   Y = BOOLEAN(X) Converts the vector X into a boolean vector.
%
%   Example: 
%      boolean([0 1 1]) returns [0 1 1]
%
%   See also LOGICAL.

%   Copyright 1990-2012 The MathWorks, Inc.

narginchk(1,1);

if ~isreal(x)
    DAStudio.error('Simulink:utility:BooleanCannotBeComplex');
end

y = logical(x);

如果查看此函数的最后一行,可以看到布尔函数调用逻辑函数。

答案 1 :(得分:8)

logical是一个内置的MATLAB,boolean是一个Simulink函数。

输入help boolean的部分回报:

  

此功能通常用于Simulink参数对话框,例如       常量块对话框。该函数生成逻辑向量,       在Simulink中被视为布尔值。现在这个逻辑是一个       MATLAB类型,这个函数基本上只是一个别名。

如果您在命令行输入edit boolean,您会看到它基本上只是在输入上调用logical

答案 2 :(得分:4)

非常清楚:在MATLAB中没有这样的东西作为boolean数据类型(至少不再这样了)。

明确证明OP所说的内容:

>> a = logical([12 0 1.2]);
>> b = boolean([12 0 1.2]);
>> whos a b
  Name      Size            Bytes  Class      Attributes

  a         1x3                 3  logical              
  b         1x3                 3  logical   

boolean不是公认的类型:

>> cast(a,'boolean')
Error using cast
Unsupported class for conversion. 

正如其他答案所说,boolean函数附带了Simulink,只不过是logical强制转换的别名。

答案 3 :(得分:1)

布尔值现在只是逻辑的别名,因为逻辑也是MATLAB类型。在Simulink中仍然使用布尔值。事实上,布尔本身只是简单地调用函数逻辑。