мне нужно нашло место 1 цифры в массиве и число цифры 0 до 1 Это означает, что в приведенном ниже массив, мне нужно, чтобы достичь placeOfOne=3
numberOfZeros=2
в:массива в Matlab
a = [0 0 1 0]
У нас есть любая функция для этого? Лучшее, Elnaz
мне нужно нашло место 1 цифры в массиве и число цифры 0 до 1 Это означает, что в приведенном ниже массив, мне нужно, чтобы достичь placeOfOne=3
numberOfZeros=2
в:массива в Matlab
a = [0 0 1 0]
У нас есть любая функция для этого? Лучшее, Elnaz
После вашего примера, я предполагаю, что ваш входной вектор содержит только двоичные значения «1» и «0».
Если вы ищете позицию «1», используйте find
, как и все предлагаемые. Число нулей всегда должно быть положение «1» минус число предшествующих «1»:
placeOfOne = find(a);
numberOfZeros = placeOfOne - (1:numel(placeOfOne));
Если вы ищете только для первого «1», добавить второй параметр. Это сводится к:
placeOfOne = find(a, 1);
numberOfZeros = placeOfOne - 1;
Используйте find, чтобы получить место 1
placeOfOne = find(a)
А потом суммировать нули до этого:
numberOfZeros = sum(a(1:placeOfOne) == 0)
Вы можете использовать функцию isMember
, если есть другие элементы чем 0 и 1.
Кроме того, если есть только 0 и 1, число нулей должно быть только (position of 1) - 1
, не так ли?
Это нужно найти (a, 1) вместо find (a, 'first'). Это лучшее решение. – Navan
@ Наван, да, ты прав. Длинный день ... :) Спасибо! –
спасибо всем !! :) – user2286747