2012-11-06 20 views

Odpowiedz

-1

logiczny typ danych Matlab nie wydaje się mieć konstruktora innego niż samej funkcji logical. Mając na uwadze powyższe, można skutecznie typecast podwójną tablicę jako logiczną tablicę bardzo łatwo, gdzie wszystkie wartości niezerowe stać logika 1 i same zera logiczne 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 

Można oczywiście skrapla ten przydział do jednej linii, jeśli” Tak więc staje się prawie tak proste, jak przypisanie dowolnego innego typu danych.

+0

wyjazdu link w mojej odpowiedzi - 'false' i' true' może być użyty tak jak 'zera' i' ones', aby bezpośrednio zainicjować matrycę logiczną, a nie podwójną precyzję. – tmpearce

+0

Zgadzam się, ale to tylko inicjuje całkowicie prawdziwą lub całkowicie fałszywą tablicę - co może być w porządku, lub możesz chcieć bezpośrednio sterować wartościami. Czy potrafisz wykorzystać w ten sposób prawdę i fałsz? A może utknąłeś przy użyciu logicznej podwójnej tablicy? – nicktruesdale

+0

Odpowiedź: jeśli nie masz nic przeciwko niezgrabnej składni dużych tablic, a = [false, true; false false] działa bezpośrednio. – nicktruesdale

8

W programie Matlab istnieje kilka "stałych", które w rzeczywistości są komendami generującymi macierze. Są to:

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 

Formy „stałe” są w zasadzie tylko pseudonimy:

a = inf; % alias for a = inf(1); 
b = true; % alias for b = true(1); 

itd. A oto kilka rzeczy, które nie mogą być powtarzane tyle:

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