Logical giá trị chiếm ít byte hơn hầu hết các giá trị numeric, đây là điểm cộng nếu bạn đang xử lý các mảng rất lớn. Bạn cũng có thể sử dụng các mảng logic để làm logical indexing. Ví dụ:
>> 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
Một lưu ý: Nếu bạn sẽ đối phó với mảng của zero và những người mà rất thưa thớt (tức là rất ít người), nó có thể là tốt nhất để sử dụng một loạt các chỉ số số như bạn sẽ nhận được từ hàm FIND.Đặt ví dụ sau:
>> 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
Câu trả lời rất hay! – Elpezmuerto