Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab中直接生成逻辑矩阵_Matlab_Matrix - Fatal编程技术网

如何在matlab中直接生成逻辑矩阵

如何在matlab中直接生成逻辑矩阵,matlab,matrix,Matlab,Matrix,到目前为止,我一直在使用 a = logical(zeros(10,10)) 创建逻辑矩阵 有没有办法直接创建它?直接使用: a = false(10,10); Matlab的逻辑数据类型似乎没有除逻辑函数本身之外的构造函数。也就是说,您可以非常轻松地将双数组有效地类型转换为逻辑数组,其中所有非零值变为逻辑1,所有零变为逻辑0: A = [1 0 2; -1 0 0; 0 1.53 -100.00] B = logical(A) B = 1 0 1 1

到目前为止,我一直在使用

 a = logical(zeros(10,10))
创建逻辑矩阵

有没有办法直接创建它?

直接使用:

a = false(10,10);

Matlab的逻辑数据类型似乎没有除
逻辑
函数本身之外的构造函数。也就是说,您可以非常轻松地将双数组有效地类型转换为逻辑数组,其中所有非零值变为逻辑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

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

在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

查看我答案中的链接-
false
true
可以像
zero
ones
一样用于直接初始化逻辑矩阵,而不是双精度矩阵。同意,尽管这只会初始化一个完全正确或完全错误的数组-这可能很好,或者,您可能希望直接控制这些值。你能用这种方式利用真与假吗?或者你在双数组上使用逻辑卡了吗?回答:如果你不介意大数组的笨拙语法,a=[false,true;false-false]直接工作。更简洁的方法是B=~~a或B=a~=0