出于好奇,如果我在MATLAB中键入这些行:
a = logical([12 0 1.2]);
b = boolean([12 0 1.2]);
输出变量a
和b
相同(相同的值和类型)。因此,boolean
和logical
之间是否存在差异?
答案 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中仍然使用布尔值。事实上,布尔本身只是简单地调用函数逻辑。