如何在matlab中直接创建逻辑矩阵

时间:2012-11-06 03:00:15

标签: matlab matrix

我到目前为止一直在使用

 a = logical(zeros(10,10))

创建逻辑矩阵。

有没有办法直接创建它?

3 个答案:

答案 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

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