2012-11-06 14 views
21

に直接論理行列を作成する方法を私はこれまで論理行列を作成するためにMathWorks社のMATLAB

a = logical(zeros(10,10)) 

を使用してきました。

直接作成する方法はありますか?

答えて

-1

MATLABの論理データ型がlogical関数自体以外のコンストラクタを持つように表示されません。それは言って、あなたが効果的にすべての非ゼロ値が論理1とすべてゼロロジック0になって非常に簡単に論理的な配列としてdouble配列を型キャストすることができます

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行にこの割り当てを凝縮することができます他のデータ型を割り当てるほど簡単になります。

+0

チェックアウト私の答えである 'false'と' true'は、 '0 'と' ones'と同じように使用して、倍精度行列ではなく論理行列を直接初期化することができます。 – tmpearce

+0

合意しましたが、これは完全に真であるか完全に偽の配列を初期化するだけです。これは問題ないかもしれませんし、値を直接制御したいかもしれません。そのように真実と虚偽を活用できますか?または、二重配列の論理を使ってスタックしていますか? – nicktruesdale

+0

答え:大規模な配列の厄介な構文に気にしない場合は、a = [false、true; false false]は直接動作します。 – nicktruesdale

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 
関連する問題