Sono finora usatocome creare matrice binaria direttamente in MATLAB
a = logical(zeros(10,10))
per creare matrice binaria.
C'è un modo per crearlo direttamente?
Sono finora usatocome creare matrice binaria direttamente in MATLAB
a = logical(zeros(10,10))
per creare matrice binaria.
C'è un modo per crearlo direttamente?
Uso false direttamente:
a = false(10,10);
tipo di dati logici di Matlab non sembra avere un costruttore diversa dalla funzione logical
stesso. Detto questo, si può efficacemente typecast una doppia matrice come una matrice logica molto facilmente, dove tutti i valori diversi da zero diventano logico 1 e tutti zeri logico 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
ovviamente è possibile condensare questa assegnazione di una linea se' Mi piace, quindi diventa quasi semplice come l'assegnazione di qualsiasi altro tipo di dati.
In Matlab ci sono alcune "costanti" che in realtà sono comandi generatori di matrice. Essi sono:
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
Le forme 'costante' sono fondamentalmente solo alias:
a = inf; % alias for a = inf(1);
b = true; % alias for b = true(1);
ecc Inoltre, qui ci sono alcune altre cose che non può essere ripetuto abbastanza:
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
Partenza il link nella mia risposta - 'false' e' true' può essere usato proprio come 'zeros' e' ones', per inizializzare direttamente una matrice logica piuttosto che una doppia matrice di precisione. – tmpearce
D'accordo, anche se questo inizializza solo un array totalmente vero o totalmente falso - che può andare bene, o potresti voler controllare direttamente i valori. Puoi sfruttare il vero e il falso in questo modo? O sei bloccato usando il logico su un doppio array? – nicktruesdale
Risposta: se non ti interessa la sintassi goffa per i grandi array, a = [false, true; false false] funziona direttamente. – nicktruesdale