MATLAB: поиск номера записи первого '1' в логическом массиве - PullRequest
1 голос
/ 03 августа 2011

Я создал логический массив из 1 и 0, используя следующий код:

nWindow = 10;
LowerTotInitial = std(LowerTot(1:nWindow));
UpperTotInitial = std(UpperTot(1:nWindow));
flag = 0;
flagArray = zeros(length(LowerTot), 1);
for n = 1 : nData0 - nWindow
    for k = 0 : nWindow - 1 
         if LowerTot(n + k) < 0.1*LowerTotInitial || UpperTot(n + k) < 0.1*UpperTotInitial
             flag = 1;
             flagArray(n) = 1;
         else
             flag = 0;
         end
    end 
end

Возвращает flagArray, массив нулей и единиц. Я пытаюсь найти индекс первой 1 в массиве. то есть. 1 = flagArray(index). Я не понимаю, как лучше всего это сделать!

Ответы [ 2 ]

6 голосов
/ 03 августа 2011

То, что вы называете номером записи, в языке MATLAB называется индексом. Чтобы найти индекс первого соответствующего элемента в массиве, вы можете использовать функцию FIND :

>> x = [0 0 1 0 1 0];
>> find(x, 1, 'first')

ans =

     3
2 голосов
/ 03 августа 2011

Попробуйте это ind = find(flagArray, k, 'first') с к = 1

Читать это Документы Matlab - найти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...