Разница между логическими и логическими

Из любопытства, если я набираю эти строки в MATLAB:

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

Выходные переменные a и b являются одинаковыми (одно и то же значение и тип). Следовательно, есть ли разница между boolean и logical?

Ответ 1

Быстрый просмотр булевой функции может дать вам хороший ответ на ваш вопрос:

Если вы введете: edit boolean в консоли matlab, вы получите:

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);

Если вы посмотрите на последнюю строку этой функции, вы увидите, что логическая функция вызывает логическую функцию.

Ответ 2

logical является встроенным MATLAB, boolean является функцией Simulink.

Часть возврата от ввода help boolean:

Эта функция обычно используется в диалогах параметров Simulink, таких как     диалог с константным блоком. Эта функция генерирует логический вектор,     который рассматривается как логическое значение в Simulink. Теперь, когда логический     MATLAB, эта функция по существу является просто псевдонимом.

Если вы введете edit boolean в командной строке, вы увидите, что он просто вызывает logical на входе.

Ответ 3

Просто, чтобы быть предельно ясным: в 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.

Ответ 4

Boolean - это просто псевдоним для логического теперь, так как логический также является типом MATLAB. Boolean все еще используется в Simulink. Infact, boolean сам по себе просто вызывает функцию логическую.