22

到目前为止我一直在使用

 a = logical(zeros(10,10))

创建逻辑矩阵。

有没有办法直接创建?

4

3 回答 3

40

直接使用false

a = false(10,10);
于 2012-11-06T03:02:57.580 回答
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
于 2012-11-06T10:23:32.513 回答
-1

logicalMatlab 的逻辑数据类型除了函数本身之外似乎没有构造函数。话虽如此,您可以非常轻松地将双精度数组有效地类型转换为逻辑数组,其中所有非零值都变为逻辑 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

如果您愿意,您显然可以将此赋值压缩为一行,因此它变得几乎与分配任何其他数据类型一样简单。

于 2012-11-06T03:15:49.610 回答