У меня есть двоичный вектор, подобный этому x = [0 0 1 1 1 1 1 1 1]
. Я хочу найти индекс, скажем, 7-го 1, который равен 9.
Я знаю, что могу сделать это:
y = find(x);
index = y(7);
Но что, если вектор огромен, и я хочу сохранить использование памяти? y = find(x)
не будет использовать много памяти? Если так, есть ли способ обойти это?
Я использую это как альтернативный способ хранения индексов для неосновных и базовых элементов в задаче линейного программирования. Поэтому я хотел бы избежать хранения индексов в виде числовых значений.
Будет ли следующее решение хорошим решением?
basis = [0 0 1 1 1 1 1 1 1];
basisIndex = 7;
correctIndex = getIndex(basisIndex, basis); % should be 9 when basisIndex = 7
function ret = getIndex(basisIndex, basis)
counter = 1;
for value = find(basis) % iterate through [3, 4, 5, 6, 7, 8, 9]
if counter == basisIndex
ret = value;
break;
end
counter = counter + 1;
end
end