我到目前为止一直在使用
a = logical(zeros(10,10))
创建逻辑矩阵。
有没有办法直接创建它?
答案 0 :(得分:40)
直接使用false:
a = false(10,10);
答案 1 :(得分:8)
在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
答案 2 :(得分:-1)
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
如果您愿意,显然可以将此分配压缩到一行,因此它几乎与分配任何其他数据类型一样简单。