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の論理データ型には、関数自体以外のコンストラクターがないようです。そうは言っても、double配列を論理配列として非常に簡単に型キャストできます。ここで、すべての非ゼロ値は論理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

必要に応じて、この割り当てを1行にまとめることができるので、他のデータ型を割り当てるのとほぼ同じくらい簡単になります。

于 2012-11-06T03:15:49.610 に答える