Logical Werte benötigen weniger Bytes als die meisten numeric Werte, was ein Vorteil ist, wenn Sie mit sehr großen Arrays arbeiten. Sie können auch logische Arrays verwenden, um logical indexing zu tun. Zum Beispiel:
>> valArray = 1:5; %# Array of values
>> numIndex = [0 1 1 0 1]; %# Numeric array of ones and zeroes
>> binIndex = logical([0 1 1 0 1]); %# Logical array of ones and zeroes
>> whos
Name Size Bytes Class Attributes
binIndex 1x5 5 logical %# 1/8 the number of bytes
numIndex 1x5 40 double %# as a double array
valArray 1x5 40 double
>> b = valArray(binIndex) %# Logical indexing
b =
2 3 5
>> b = valArray(find(numIndex)) %# You have to use the FIND function to
%# find the indices of the non-zero
b = %# values in numIndex
2 3 5
Eine Anmerkung: Wenn Sie mit Arrays von Nullen und Einsen zu tun werden, die sehr spärlich sind (dh nur sehr wenige sind), kann es am besten sein, eine Reihe von numerischen Indizes zu verwenden, wie zum Beispiel Sie würden von der FIND Funktion erhalten. Nehmen Sie das folgende Beispiel:
>> binIndex = false(1,10000); %# A 1-by-10000 logical array
>> binIndex([2 100 1003]) = true; %# Set 3 values to true
>> numIndex = find(binIndex) %# Find the indices of the non-zero values
numIndex =
2 100 1003
>> whos
Name Size Bytes Class Attributes
binIndex 1x10000 10000 logical %# 10000 bytes versus
numIndex 1x3 24 double %# many fewer bytes
%# for a shorter array
Sehr gute Antwort! – Elpezmuerto