Подтвердить что ты не робот

Как создать логическую матрицу непосредственно в matlab

Я до сих пор использовал

 a = logical(zeros(10,10))

для создания логической матрицы.

Есть ли способ создать его напрямую?

4b9b3361

Ответ 1

Используйте false непосредственно:

a = false(10,10);

Ответ 2

В Matlab существует несколько "констант", которые на самом деле являются матрично-генерирующими командами. Это:

true(10);   true(n,m,k,..);   % for an all-true  10-by-10 or n-by-m-by-k-by-...matrix
false(10);  false(n,m,k,..);  % for an all-false 10-by-10 or n-by-m-by-k-by-...matrix
inf(10);    inf(n,m,k,..);    % for an all-inf   10-by-10 or n-by-m-by-k-by-...matrix
nan(10);    nan(n,m,k,..);    % for an all-nan   10-by-10 or n-by-m-by-k-by-...matrix

"Константные" формы - это в основном просто псевдонимы:

a = inf;   % alias for a = inf(1);
b = true;  % alias for b = true(1);

и т.д.. Кроме того, вот еще несколько вещей, которые нельзя повторить достаточно:

rand(10);  rand(n,m,k,..);    % for an all-random 10-by-10 or n-by-m-by-k-by-...matrix
zeros(10); zeros(n,m,k,..);   % for an all-zero   10-by-10 or n-by-m-by-k-by-...matrix
zeros(n,m,k,...,'uint8');     % for an all-zero   n-by-m-by-k-by-...matrix of type uint8
ones(10); zeros(n,m,k,..);    % for an all-one    10-by-10 or n-by-m-by-k-by-...matrix
ones(n,m,k,...,'uint8');      % for an all-one    n-by-m-by-k-by-...matrix of type uint8
eye(10); eye(n,m,'uint8');    % for an identity matrix of type uint8 of 10-by-10 or n-by-m

Ответ 3

Тип логических данных Matlab не имеет конструктора, отличного от самой функции logical. При этом вы можете очень легко вывести двойной массив как логический массив, где все ненулевые значения становятся логическими 1 и всей логикой нулей 0:

A = [1 0 2; -1 0 0; 0 1.53 -100.00]

B = logical(A)

B = 
   1     0     1
   1     0     0
   0     1     1

Очевидно, вы можете сконденсировать это задание на одну строку, если хотите, поэтому он становится почти таким же простым, как присвоение любого другого типа данных.