Это предположение, но похоже, что для истинных записей в каждом столбце в a1
вы хотите извлечь соответствующие значения в a2
. Поскольку вы сказали, что a1
является логическим (в MATLAB типом логический ), вы можете использовать логический индекс следующим образом:
vals1 = a2(a1(:,1)); %# Use column 1 of a1 as an index into a2
vals5 = a2(a1(:,5)); %# Use column 5 of a1 as an index into a2
...
Вот пример:
>> a1 = logical(randi([0 1],10,4)) %# Make a random logical matrix
a1 =
0 0 1 1
0 1 0 0
1 1 1 1
1 0 1 0
0 0 1 1
0 0 1 0
0 1 1 0
1 0 0 0
1 1 0 1
1 0 0 0
>> a2 = 1:10;
>> a2(a1(:,1)) %# Get the values in a2 corresponding
%# to the ones in column 1 of a1
ans =
3 4 8 9 10
>> a2(a1(:,2)) %# Get the values in a2 corresponding
%# to the ones in column 2 of a1
ans =
2 3 7 9