Я до сих пор использовал
a = logical(zeros(10,10))
для создания логической матрицы.
Есть ли способ создать его напрямую?
Я до сих пор использовал
a = logical(zeros(10,10))
для создания логической матрицы.
Есть ли способ создать его напрямую?
Используйте false непосредственно:
a = false(10,10);
В 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
Тип логических данных 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
Очевидно, вы можете сконденсировать это задание на одну строку, если хотите, поэтому он становится почти таким же простым, как присвоение любого другого типа данных.